题解 | #在旋转过的有序数组中寻找目标值#
在旋转过的有序数组中寻找目标值
https://www.nowcoder.com/practice/87c0e7abcbda41e7963660fa7d020995
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param target int整型 * @return int整型 */ int search(vector<int>& nums, int target) { // write code here /* 0 1 2 3 4 5 6 6 8 10 0 2 4 5 要不是mid的左边有序的,要不是mid的右边有序的 */ int find_result = 0; int low = 0, high = nums.size()-1, mid=0; while(low<=high) { mid = (low+high)/2; if(nums[mid]==target) { find_result = 1; break; } else { //右边有序,小于等于,可能只有1个元素 if(nums[mid]<=nums[high]) { if(target>nums[mid]&&target<=nums[high]) { low = mid + 1; } else { high = mid -1; } } else if(nums[low]<nums[mid])//左边有序 { if(nums[low]<=target&&target<nums[mid]) { high = mid - 1; } else { low = mid + 1; } } } } if(find_result==0) mid = -1; return mid; } };