0
点赞
收藏
分享

微信扫一扫

2.1.3搜索旋转排序数组


文章目录

  • ​​1.题目要求​​
  • ​​2.代码​​

1.题目要求

  • ​​要求​​
  • ​​思路​​

2.代码

class solution
{
public:
int search(vector<int>& nums, int target)
{
int allnum = nums.size();
if (allnum == 0)
return -1;
if (allnum == 1)
return nums[allnum-1] == target ? 0 : -1;
int low = 0;
int high = allnum - 1;
while (low <= high)
{
int mid = (low + high)/2;
if (nums[mid] == target)
return mid;

//判断分割出来的mid哪个部分有序,根据有序的那个部分确定我们该如何改变二分查找的上下界
if (nums[mid] >= nums[0])
{
if (nums[0] <= target && target <= nums[mid])
high = mid - 1;
else
low = mid + 1;

}
else
{
if (nums[mid] < target && target <= nums[high])
low = mid + 1;
else
high = mid - 1;
}

}

return -1;
}
};


举报

相关推荐

0 条评论