LeetCode 153. 寻找旋转排序数组中的最小值

153. 寻找旋转排序数组中的最小值

解题思路

利用旋转有序数组的性质,每次将中点与右边界比较,若中点更大说明最小值在右半段,否则在左半段,收缩区间直到左右指针重合,此时指向的就是最小值

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public int findMin(int[] nums) {
int left = 0, right = nums.length - 1;
while (left < right) {
int mid = left + (right - left) / 2;
if (nums[mid] > nums[right]) {
left = mid + 1;
} else {
right = mid;
}
}
return nums[left];
}
}

二分法终极铁律

二分类型 循环条件 收缩逻辑
找精确值 while(left <= right) left = mid + 1 / right = mid - 1
找边界/极值 while(left < right) 一边 +1,另一边保留 mid

LeetCode 153. 寻找旋转排序数组中的最小值
https://sowink.cn/2026/02/08/LeetCode-153-寻找旋转排序数组中的最小值/
作者
Xurx
发布于
2026年2月8日
许可协议