81. 搜索旋转排序数组 II
1 class Solution 2 { 3 public: 4 bool search(vector<int>& nums, int target) 5 { 6 int l = 0, r = nums.size()-1; 7 while(l <= r) 8 { 9 //处理重复数字 10 while(l < r && nums[l] == nums[l + 1]) ++l; 11 while(l < r && nums[r] == nums[r - 1]) --r; 12 int mid = l + (r - l)/ 2; 13 if(nums[mid] == target) return true; 14 //左半部分有序 15 if(nums[mid]>=nums[l]) 16 { 17 if(target <= nums[mid] && target >= nums[l]) r = mid - 1;//target落在左半边 18 else l = mid + 1; 19 } 20 else//右半部分有序 21 { 22 if(target >= nums[mid] && target <= nums[r]) l = mid + 1;//target落在右半边 23 else r = mid - 1; 24 } 25 } 26 return false; 27 } 28 };
Mamba never out

浙公网安备 33010602011771号