文章目录
题目链接:
153. 寻找旋转排序数组中的最小值
题目描述:
解法
因为这里的数是全部不相同的,所以可以这么搞。
C++ 算法代码:
class Solution
{
public:
int findMin(vector<int>& nums)
{
int left = 0, right = nums.size() - 1;
int x = nums[right]; // 标记一下最后一个位置的值
while(left < right)
{
int mid = left + (right - left) / 2;
if(nums[mid] > x) left = mid + 1;
else right = mid;
}
return nums[left];
}
};
图解
例如:nums = [3,4,5,1,2]
-
left = 0, right =4
x=nums[4]=2
进入循环,
mid = 2
nums[mid] > x,left=3
-
left = 3, right =4
进入循环,
mid = 3
right = 3
-
结束程序,返回
1