力扣中等 153.寻找旋转排序数组中的最小值
题目介绍
题解
正解:可以和数组最后一个数比较,来判定二分的位置是在最小值的左侧还是在最小值的右侧。
在0到n-2二分,如果nums[mid] > nums[n - 1],则mid在最小值的左侧,mid和其左侧染成红色;如果nums[mid] < nums[n - 1],则mid要么是最小值要么在最小值的右侧,染成蓝色,所以二分结束后,最左边的蓝色就是答案。
class Solution {
public int findMin(int[] nums) {
int left = 0, right = nums.length - 2; // 闭区间 [0, nums.length - 2]
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] < nums[nums.length - 1]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return nums[left];
}
}
原文地址:https://blog.csdn.net/qq_51352130/article/details/142420126
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!