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]; } }
|