153. 寻找旋转排序数组中的最小值 - 力扣(LeetCode) 声明:菜鸡学习记录,大佬请滑走
发现用左端点和中间节点比较难判断,那就改成右节点和中间节点
class Solution {
public int findMin(int[] nums) {
// 由于保持局部递增性,找最小节点
// 用中间节点和右边界节点来比较
// while l < r
// if a[mid] > a[r] l = mid+1
// else a[mid] <= a[r] r = mid
int l = 0, r = nums.length - 1;
while(l < r) {
int mid = (l+r)>>1;
if (nums[mid] > nums[r]) { // 说明已经乱序,最小值肯定在右边
l = mid + 1;
}
else {
r = mid;
}
}
return nums[l];
}
}