您的位置:首页 > 其它

33. Search in Rotated Sorted Array(无敌2分)

2017-01-31 01:30 295 查看
这题思路清晰,先用2分查找找出最小的点,然后分区间进行一次2分就ok了

Ps!!!复习2分的各种细节,虽然很简单!!!!!

class Solution {
public:
int search(vector<int>& nums, int target) {
int n = nums.size();
if(n == 1 && nums[0] == target) return 0;
else if(n == 1) return -1;
int r, l;
r = 0; l = n - 1;
while(l - r > 1){
int mid = (r + l) / 2;
if(nums[mid] < nums[n - 1])   l = mid;
else r = mid;
}

if(nums[r] < nums[l]){
r = 0; l = n - 1;
}
else if(target > nums[n - 1]){
r = 0; l = l - 1;
}
else{
r = r + 1; l = n - 1;
}

while(r < l){
int mid = (r + l) / 2;
if(nums[mid] == target) return mid;
if(nums[mid] > target) l = mid;
else r = mid + 1;
}
if(nums[l] == target) return l;
return -1;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: