154. Find Minimum in Rotated Sorted Array II

Posted habibah-chang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了154. Find Minimum in Rotated Sorted Array II相关的知识,希望对你有一定的参考价值。

https://www.cnblogs.com/habibah-chang/p/12538877.html

附加条件,允许重复数值。

Example 1:
Input: [1,3,5]
Output: 1

Example 2:
Input: [2,2,2,0,1]
Output: 0

  

方法:

思想同上述链接题目,二分查找

附加处理:

如果mid==low的值,那么不确定low~mid都是一样的值,还是其中存在最小值。

那么,只能high--,一项一项移动来确定。

 

参考代码:

 1 class Solution {
 2 public:
 3     int findMin(vector<int>& nums) {
 4         int low=0, high=nums.size()-1;
 5         while(low<high){
 6             if(nums[low]<nums[high]) return nums[low];
 7             int mid=(low+high)/2;
 8             if(nums[mid]>=nums[low]){
 9                 if(nums[mid]==nums[high]) high--;//★
10                 else low=mid+1;
11             }else{
12                 high=mid;
13             }
14         }
15         return nums[low];
16     }
17 };

 

以上是关于154. Find Minimum in Rotated Sorted Array II的主要内容,如果未能解决你的问题,请参考以下文章

154. Find Minimum in Rotated Sorted Array II

#Leetcode# 154. Find Minimum in Rotated Sorted Array II

154. Find Minimum in Rotated Sorted Array II

154. Find Minimum in Rotated Sorted Array II(Binary search)

154. Find Minimum in Rotated Sorted Array II

154 Find Minimum in Rotated Sorted Array II