153. Find Minimum in Rotated Sorted Array(leetcode, binary search)
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.
1 public int findMin(int[] nums) { 2 if(nums.length==0) return 0; 3 int l = 0, r = nums.length-1; // [) 4 while(l < r){ 5 int mid = l+(r-l)/2; 6 if(nums[mid]>nums[r]){ 7 l = mid+1;//remove 8 }else 9 r = mid; 10 } 11 return nums[l]; 12 }
二分查找还要继续总结一个模板。
to be continued。。。。。