1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| class Solution { public: bool search(vector<int>& nums, int target) { int lo = 0, hi = nums.size() - 1; while(lo <= hi) { int mid = lo + (hi - lo) / 2; if(nums[mid] == target) return true; if(nums[mid] == nums[lo]) { ++lo; }else if(nums[mid] > nums[lo]) { if(target >= nums[lo] && target < nums[mid]) hi = mid - 1; else lo = mid + 1; }else { if(target < nums[lo] && target > nums[mid]) lo = mid + 1; else hi = mid - 1; } } return false; } };
|