leetcode33——Search in Rotated Sorted Array

题目大意:在旋转排序数组中搜索目标数字是否存在

分析:二分搜索的变形。直接搜肯定可以,但是由于是旋转排序数组,所以可以改善二分搜索的算法以得到更高的搜索效率。

代码:转载自https://yq.aliyun.com/articles/861

class Solution {
public:
int search(vector<int>& nums, int target) {
int l = 0, r = nums.size() - 1;
while (l <= r) {
int mid = (r - l) / 2 + l;
if (nums[mid] == target)
return mid;  //比如4 5 6 7 0 1 2
if (nums[mid] < nums[r]) {  //此时mid右侧肯定有序
if (nums[mid]<target && target <= nums[r])
l = mid + 1;
else
r = mid - 1;
}
else {  //此时mid左侧肯定是有序的
if (nums[l] <= target && target<nums[mid]) 
r = mid - 1;
else  //目标数字在较小的一段内
l = mid + 1;
}
}
return -1;
}
};

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页