首页 > 其他 > 详细

leetcode-Find Minimum in Rotated Sorted Array-153

时间:2016-08-31 20:12:14      阅读:176      评论:0      收藏:0      [点我收藏+]

一个递增数组,没有重复的元素,可能被右移过,找出最小的元素

这和这题差不多http://www.cnblogs.com/0summer/p/5825282.html

依旧是改进过的二分:

1.如果nums[l]<nums[mid],说明[l,mid]是递增的,但是[mid,r]不确定

  1)如果nums[mid]>nums[r]说明[mid,r]包括了递增数组的首尾,那么最小值一定在这个区间,则l=mid+1;

  2)否则最小值在[l,mid]区间,则r=mid-1

2.如果nums[l]>nums[mid],说明[l,mid]包括了递增数组的首尾,那么最小值一定在这个区间,则r=mid-1

3.nums[l]=nums[mid]说明此时l==mid,则l++

 1 class Solution {
 2 public:
 3     int findMin(vector<int>& nums) {
 4         if(nums.size()==0) return 0;
 5         int l=0,r=nums.size()-1;
 6         int key=INT_MAX;
 7         //int cnt=1;
 8         while(l<=r){
 9             //cout<<cnt++<<endl;
10             int mid=(l+r)>>1;
11             if(nums[mid]<=key){
12                 key=nums[mid];
13             }
14             if(nums[l]<nums[mid]){
15                 if(nums[mid]>nums[r]) l=mid+1;
16                 else r=mid-1;
17             }
18             else if(nums[l]>nums[mid]){
19                 r=mid-1;
20             }
21             else l++;
22         }
23         return key;
24     }
25 };

 

leetcode-Find Minimum in Rotated Sorted Array-153

原文:http://www.cnblogs.com/0summer/p/5827120.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!