33 Search in Rotated Sorted Array
来源:互联网 发布:淘宝网毛呢长裙 编辑:程序博客网 时间:2024/05/24 03:22
这道题乍一看我就下意识用了暴力法,然后竟然还通过了。。。
class Solution {public: int search(vector<int>& nums, int target) { for(int i =0; i <nums.size();i++) { if(nums[i]==target) return i; } return -1; }};
然后感觉不能这样,应该是需要用二分查找等来使复杂度降低为logN好一些,各种判定条件有点想不周到,所以就去参考他们的回答顺便给翻译一下。
class Solution {public: int search(vector<int>& nums, int target) { if(nums.size() == 0) return -1; int left = 0; int right = nums.size()-1; while(left <= right){ int mid = (left+right)/2; if(target == nums[mid]) return mid; if((nums[mid]>=nums[left] && (target>nums[mid] || (target<nums[left]))) || (nums[mid]<nums[left] && target>nums[mid] && target<=nums[right])) left = mid + 1; else right = mid -1; } return -1; }};也是正常二分查找的初始规则,然是不同点是MID的位置,MID有可能会大于left也可能会小于left比如1234567,可能反转为4567123也可能反转为5671234。这就需要分情况讨论一下了,如果mid>=left,证明mid后面的数可能有比mid大的,而且left到mid是递增的。所以如果target>mid下一次查找一定会搜寻右半边,也可能target比left还小,这样也一定答案在右半边。 如果mid<left,那么mid到right是递增的,而且right<=left。这样当target如果大于mid而且小于right一定会搜寻右半边,如果target大于left就一定搜寻左半边了。
0 0
- LeetCode(33)Search in Rotated Sorted Array
- [leetcode 33] Search in Rotated Sorted Array
- leetcode|33|Search in Rotated Sorted Array
- Leetcode 33 Search in Rotated Sorted Array
- Leetcode[33]-Search in Rotated Sorted Array
- 33 Search in Rotated Sorted Array
- leetcode 33 -- Search in Rotated Sorted Array
- Search in Rotated Sorted Array - LeetCode 33
- leetcode 33 Search in Rotated Sorted Array
- leetcode 33: Search in Rotated Sorted Array
- Leetcode #33 Search in Rotated Sorted Array
- LeetCode #33 Search in Rotated Sorted Array
- Leetcode#33||Search in Rotated Sorted Array
- leetcode 33 : Search in Rotated Sorted Array
- 33Search in Rotated Sorted Array
- leetcode-33 Search in Rotated Sorted Array
- LeetCode_OJ【33】Search in Rotated Sorted Array
- LeetCode 33: Search in Rotated Sorted Array
- java-io-文件相关工具类(全)
- 母牛的故事 (sdut oj)
- Swift之NSOperation及其和GCD的区别
- NOIP 2011 普及组 复赛 stat 统计单词数
- 4-10 阶乘计算升级版 (20分)(大数乘法)
- 33 Search in Rotated Sorted Array
- App开发常用开源控件收集(持续更新中)
- 用C#来学习唐诗三百首和全唐诗
- 坐标KNN聚类python实例
- Centos7的firewalld配置
- Oracle有关树的查询
- Unity3D的单例模式实现
- 关于button不能执行click事件
- java获取文件夹下所有文件的名称