leetcode_search_in_rotated_sorted_array_ii 发表于 2016-12-05 难度:Medium 解题思路:是系列1的延伸。遇到[1,1,5,1] [5,1,1]这种我们无法判断哪部分是有序的。处理方式是,最右边的向左移动一位,直到移到不同值。 代码如下: 123456789101112131415161718192021222324252627282930class Solution {public: bool search(vector<int>& nums, int target) { int low = 0; int high = nums.size()-1; while(low <= high) { int mid = low+(high-low)/2; if(target == nums[mid]) return true; if(nums[mid] < nums[high]) { if(target > nums[mid] && target <= nums[high]) low = mid+1; else high = mid-1; } else if(nums[mid] > nums[high]) { if(target >= nums[low] && target < nums[mid]) high = mid-1; else low = mid+1; } else --high; } return false; }}; 运行结果:6ms,超过31.56%