题目:
解答:
1 class Solution { 2 public: 3 bool search(vector<int>& nums, int target) 4 { 5 int l = 0; 6 int r = nums.size() -1; 7 8 while (l <= r) 9 { 10 while (l != r && nums[l] == nums[r]) 11 { 12 r--; 13 } 14 15 int mid = l + (r - l) / 2; 16 17 if (target == nums[mid]) 18 { 19 return true; 20 } 21 22 // if (nums[l] == nums[mid]) 23 // { 24 // l++; 25 // continue; 26 // } 27 28 // 前半部分有序 29 if (nums[l] <= nums[mid]) 30 { 31 if (nums[l] <= target && target < nums[mid]) 32 r = mid-1; 33 else 34 l = mid+1; 35 } 36 else 37 { 38 if (nums[mid] < target && target <= nums[r]) 39 l = mid +1; 40 else 41 r = mid -1; 42 } 43 } 44 return false; 45 } 46 };
原文:https://www.cnblogs.com/ocpc/p/12830265.html