这里只会有两种情况
第一种情况下若要找比mid大的值只有往右走,若要找比mid小的值,左右都有可能
第二种情况下若要找比mid小的值只有往左走,若要找比mid大的值,左右都有可能
class Solution {
public:
int search(vector<int>& nums, int target) {
int n=nums.size();
int left=0,right=n-1;
int premid;
while(left<=right)
{
int mid=(left+right)>>1;
if(nums[mid]==target)
return mid;
else if(nums[mid]>target)
{
if(nums[mid]<nums[left])
right=mid-1;
else
{
if(nums[left]>target)
left=mid+1;
else
right=mid-1;
}
}
else
{
if(nums[mid]>nums[left])
left=mid+1;
else
{
if(target>nums[right])
right=mid-1;
else
left=mid+1;
}
}
}
return -1;
}
};
本文介绍了一种在旋转数组中使用二分查找算法查找特定元素的方法。针对旋转数组的特点,文章详细阐述了如何判断搜索方向,并给出了具体的实现代码。
851

被折叠的 条评论
为什么被折叠?



