leetcode 153. Find Minimum in Rotated Sorted Array
题目描述
分析
可以发现一个规律:
假如整个数组最后一个元素是x。
最小值左侧(不含最小值自己)的元素全部大于x。
最小值右侧(包含最小值自己,不包含x)的元素全部小于x。
如果整个数组是有序的,最小值就是第一个元素。最小值左侧没有元素,理解为有无穷大的值,上述规律也可以说是成立的。
class Solution {
public:int findMin(vector<int>& nums) {int left = 0;int n = nums.size();int right = n -1;int mid = 0;while(left < right){mid = (left+right)/2;if(nums[mid] > nums[n-1]){//nums[mid]大于最后一个元素,说明最小值在mid右侧,不包含midleft = mid+1;}else{//nums[mid]小于等于最后一个元素,说明最小值在mid左侧或者最小值就是mid这个元素,所以更新区间需要包含midright = mid;}}return nums[left];}
};