154. 寻找旋转排序数组中的最小值 II

 1 //利用模板
 2 
 3 //以最后一个值来划分
 4 //如果比它小,在右边,更新r
 5 //如果比它大,在左边,更新l
 6 
 7 //由于有重复值的情况, 需要加入 mid 元素等于 hi 元素的情况
 8 //此时应该将 hi 减 1 防止重复数字是最小元素
 9 class Solution 
10 {
11 public:
12     int findMin(vector<int>& nums) 
13     {
14         int l = 0,r = nums.size() - 1;
15         while(l < r)
16         {
17             int mid = l + r >> 1;
18             if(nums[mid] < nums[r]) r = mid;
19             else if(nums[mid] > nums[r])l = mid + 1;
20             else r--;
21         }
22         return nums[l];
23     }
24 };

 

posted @ 2020-04-03 14:25  Jinxiaobo0509  阅读(151)  评论(0)    收藏  举报