153. Find Minimum in Rotated Sorted Array(leetcode, binary search)

时间:2023-03-08 18:18:18

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

leetcode 的题目,binary search 的变形。去在rotated array里找最小值。

Idea:分析binary search 三种cases:

1. nums[mid] > nums[r]: remove the left part: l = mid+1          e.g. 2 3 4 5 1 2

2. nums[mid] < nums[l] && nums[mid] < nums[r]: h = mid       e.g. 5 6 1 2 3 4

3. nums[mid] <nums[r] && nums[mid] > nums[l]: h = mid                e.g. 1 2 3 4 5 6

Combing the 2nd and 3rd case.

二分查找有点难, left 和 right的分析, 在合适 的时候break while loop.

 public int findMin(int[] nums) {
if(nums.length==0) return 0;
int l = 0, r = nums.length-1; // [)
while(l < r){
int mid = l+(r-l)/2;
if(nums[mid]>nums[r]){
l = mid+1;//remove
}else
r = mid;
}
return nums[l];
}

二分查找还要继续总结一个模板。

to be continued。。。。。