Poison

153. Find Minimum in Rotated Sorted Array

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public int findMin(int[] nums) {
int left = 0, right = nums.length - 1;
while (true) {
int mid = (left + right) >>> 1;
if (nums[mid] < nums[right]) {
right = mid;
} else if (nums[mid] > nums[right]) {
left = mid + 1;
} else {
// 题目保证了无重复元素,所以如果相等,说明两个索引已经指向同一个元素,即最小元素
return nums[mid]; // 注意题目要求返回元素值而不是索引
}
}
}
}

关键点在于与右端元素相比较。

Reference

153. Find Minimum in Rotated Sorted Array