Search in Rotated Sorted Array II
来源:互联网 发布:linux语言改为中文 编辑:程序博客网 时间:2024/04/29 17:47
class Solution {public: bool bsearch(int start,int end,int target,int A[]) { while(start<end) { int mid=start+(end-start)/2; if(A[mid]==target) { return true; } if(A[mid]>target) { end=mid; } else { start=mid+1; } } return false; } bool search(int A[], int n, int target) { if(n==0) { return false; } if(n==1) { if(A[0]==target) { return true; } else { return false; } } if(A[0]==A[n-1]) { for(int i=0;i<n;++i) { if(A[i]==target) { return true; } } return false; } else if(A[0]>A[n-1]) { int pstart=0; int pend=n-1; while(pstart<pend) { int mid=pstart+(pend-pstart)/2; if(A[mid]<A[0]) { pend=mid; } else { pstart=mid+1; } } if(target==A[0]) { return true; } else if(target>A[0]) { return bsearch(0,pstart,target,A); } else { return bsearch(pstart,n,target,A); } } else { return bsearch(0,n,target,A); } }};
基本思路是利用二分查找,不同于之前的题目Search in Rotated Sorted Array,这里数组元素可能会有重复。所以要分情况讨论,当A[0]<A[n-1],没有旋转,直接二分查找;
当A[0]>A[n-1],有旋转,找到第二段的起点,然后在前半段或者后半段进行二分查找;当A[0]==A[n-1,无法通过二分查找找到第二段的起点,所以只能退化为线性搜索。
0 0
- LeetCode: Search in Rotated Sorted Array II
- Search in Rotated Sorted Array II
- LeetCode Search in Rotated Sorted Array II
- LeetCode : Search in Rotated Sorted Array II
- [LeetCode] Search in Rotated Sorted Array II
- [Leetcode] Search in Rotated Sorted Array II
- Search in Rotated Sorted Array II
- [leetcode] Search in Rotated Sorted Array II
- [LeetCode]Search in Rotated Sorted Array II
- Search in Rotated Sorted Array II
- Search in Rotated Sorted Array II
- Search in Rotated Sorted Array II
- Search in Rotated Sorted Array II
- [leetcode] Search in Rotated Sorted Array II
- LeetCode-Search in Rotated Sorted Array II
- Search in Rotated Sorted Array II
- LeetCode - Search in Rotated Sorted Array II
- 【Leetcode】Search in Rotated Sorted Array II
- sourceinsight 3.5中文注释间有空格的一种处理方法
- 黑马程序员——Java基础---前奏概述
- 控制linux动态链接库(so, standard object)导出函数
- 93. 基于Notes/Domino的文档工作流系统(五)
- android4.0.3 修改启动动画和开机声音
- Search in Rotated Sorted Array II
- 若干种使用指针输出二维数组中元素的方式
- Android-Notification
- CMFCRibbonColorButton颜色控件
- Pow(x, n)
- Mysql安装过程的问题解决
- MSSQL,ORACLE,DB2,MYSQL,Access各类数据库使用GUID作为主键
- windows下创建vp9的VS版本
- SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)