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。。。。。

posted @ 2018-04-03 13:17  wz30  阅读(87)  评论(0编辑  收藏  举报