leetcode 81. Search in Rotated Sorted Array II
2016-04-24 21:13
387 查看
参考: https://yq.aliyun.com/articles/3888
注:由于有序数组中可能会有重复的数字,如113111,如果nums[mid] == nums[i],只要将i+1即可。
题意
在有序的旋转数组中查找目标值(旋转有序指:一个数组被分割成两个有序的区间,且两区间能相连成一个有序的大区间。如45123)题解
应为任意一个点分割的两个区间至少有一个是有序的,所以可以使用二分查找的方法解决。注:由于有序数组中可能会有重复的数字,如113111,如果nums[mid] == nums[i],只要将i+1即可。
代码
class Solution { public: bool search(vector<int>& nums, int target) { int i = 0, j = nums.size() - 1; while(i <= j) { int mid = (i + j) / 2; if(nums[mid] == target) return true; else if(nums[mid] > nums[i]) // 确定的有序区间在左边 { if(nums[i] <= target && target <= nums[mid]) //若target在此有序区间中 j = mid; else i = mid + 1; } else if(nums[mid] < nums[i]) //确定的有序区间在右边 { if(nums[mid] <= target && target <= nums[j]) i = mid; else j = mid - 1; } else i++; } return false; } };
相关文章推荐
- ubuntu下需要做的一些事情
- C# 可视化读取文件、文件夹
- java枚举
- 1009: University
- Scrapy爬取美女图片 (原创)
- 评测—输入法
- Java 泛型
- java.util包---HashMap
- Linux基本命令
- Android开发之WebView组件的使用解析
- Electron
- mysql左连接、右连接、内连接(等值连接)、全连接
- CentOS7LAMP部署流程
- Java 异常处理机制
- 对于ios7.0以后的截屏功能
- RequireJs
- phantomjs server + highchart 在服务器端生成highchart图表图片
- 第八周学习进度
- Activity和View的区别:
- 编译原理