http://oj.leetcode.com/problems/search-in-rotated-sorted-array-ii/

如果在数组中有重复的元素,则不一定说必定前面或者后面的一半是有序的,所以有个while循环的处理。

#include <iostream>
using namespace std; class Solution {
public:
bool binarySearch(int A[],int target,int begin,int end)
{
int mid = (begin+end)/; if(target == A[mid])
return true;
if(target == A[begin])
return true;
if(target == A[end])
return true;
if(begin>=end)
return false; while(A[begin] == A[mid])
begin++;
if(A[begin]<A[mid])//前面有序
{
if(target>A[begin] && target<A[mid]) //在前面
return binarySearch(A,target,begin,mid-);
else
return binarySearch(A,target,mid+,end); //在后面
}
else if(A[mid]<=A[end])//后面有序
{
while(A[mid] == A[end])
end--;
if(target>A[mid] && target<A[end]) //在后面
return binarySearch(A,target,mid+,end);
else
return binarySearch(A,target,begin,mid-);//在前面
}
return false;
}
bool search(int A[], int n, int target) {
return binarySearch(A,target,,n-);
}
}; int main()
{
Solution myS; int A[] = {,,,,};
bool ans = myS.search(A,,);
cout<<ans<<endl;
return ; }

最新文章

  1. 三道简单的前端HTML/CSS题目
  2. jquery获取(设置)节点的属性与属性值
  3. Qt窗体内控件自适应调整大小
  4. C++ Primer : 第二章:变量和基本类型(1)
  5. android学习笔记七——控件(DatePicker、TimePicker、ProgressBar)
  6. js鼠标及对象坐标控制属性详细解析
  7. SVN备份教程(二)
  8. SQL Server 可疑的解决办法
  9. 九度OnlineJudge之1018:统计同成绩学生人数
  10. 关于IO多路复用的一篇好文
  11. 最短路&lt;dijk&gt;
  12. Hibernate 乐观锁(Optimistic Locking)
  13. javascript中的隐式类型转化
  14. JUC
  15. VS2013使用滚动条缩略图、双击选中高亮、配色方案、代码竖虚线(缩进标尺)
  16. linux中pam模块
  17. StiReport简单使用
  18. Codeforces 124A - The number of positions
  19. Oracle面试相关
  20. 【转】【计算机视觉】opencv靶标相机姿态解算2 根据四个特征点估计相机姿态 及 实时位姿估计与三维重建相机姿态

热门文章

  1. 1991: C语言实验——大小写转换
  2. NYOJ-1057-寻找最大数(三)
  3. JavaScript中数据类型和typeof返回的数据类型
  4. myeclipse 导入项目时no projects are found to import解决办法
  5. 14.list列表
  6. js转换金钱为中文单位元、万元、亿元、万亿
  7. Python自动化测试框架——数据驱动(从文件中读取)
  8. (53)zabbix模板
  9. centos7下添加开机启动
  10. UITextView 实现placeholder