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 (left < right) { int mid = (left + right) >>> 1; if (nums[mid] < nums[right]) { right = mid; } else { left = mid + 1; } }
return nums[left]; } }
|
关键点在于与右端元素相比较,而不是相邻元素比较,否则 nums = [2, 3, 4, 5, 1] 无法 AC。
References
153. Find Minimum in Rotated Sorted Array