https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/

We can still use binary search on on the rotated sorted array. Draw a picture will help to visualize the situations: (borrowed from outside)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Solution {
public int findMin(int[] nums) {
int start = 0;
int end = nums.length - 1;
int mid = 0;
while (start + 1 < end) {
mid = start + (end - start) / 2;
if (mid > 0 && nums[mid] < nums[mid - 1]) {
return nums[mid];
}
if (nums[mid] > nums[end] && nums[mid] >= nums[start]) {
start = mid;
} else {
end = mid;
}
}
return nums[start] > nums[end] ? nums[end] : nums[start];
}
}