题解 | #在旋转过的有序数组中寻找目标值#
在旋转过的有序数组中寻找目标值
http://www.nowcoder.com/practice/87c0e7abcbda41e7963660fa7d020995
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param target int整型 * @return int整型 */ int search(vector& nums, int target) { // write code here //这题直接遍历就能水过,二分的方法如下: //首先你要判断target位于哪个区间部分 if(target==nums[0]) return 0; return process(nums,0, nums.size()-1,target); } int process(vectorarray,int low,int high,int k) { if(low>high) return -1; int mid=(low+high)/2; if(array[mid]==k) return mid; if(array[mid]<k&&k<array[0]) return process(array, mid+1,high, k);
else if(array[mid]<k&&array[mid]>=array[0])
return process(array, mid+1, high, k);
else if(array[mid]<k&&k>array[0]&&array[mid]<array[0])
return process(array, low, mid-1, k);
if(array[mid]>k&&k>array[0])
return process(array, low, mid-1, k);
else if(array[mid]>k&&array[mid]<array[0])
return process(array, low, mid-1, k);
else if(array[mid]>k&&array[mid]>=array[0]&&k<array[0])
return process(array, mid+1, high, k);
else return -1;
}
};