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

Posted wz30

tags:

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

https://leetcode.com/problems/find-minimum-in-rotated-sorted-array-ii/description/ -- leetcode

follow up question: find the minimum element in a rotated array with duplicate elements

Idea: [3,3,1,3] compared to [3,4,1,2]  -> l = mid+1 --1

         [1,3,3] compared to [1,3,4] - > r = mid;  -- 2

         If we used the previous solution, it will complain with the above cases because one case is : nums[mid] > nums[r] l = mid+1; violating the 2nd case to update r ot l

         So here is the hadful problem.

         At first, I am trying to seperate this case with one conditon:  nums[mid] == nums[r] or..... However that is not general

         Totally, (nums[l] == nums[mid]) && (nums[r] == nums[mid]) {left++, right--} skip相同的元素。知道不同为止。

  Dealing with special case [1,1] or [1] -- determine the case of left and right.

         Idea is from the https://leetcode.com/problems/search-in-rotated-sorted-array-ii/description/ -- search in rotated array.

 

public int findMin(int[] nums) {
        int l  =0, r = nums.length-1;
        while(l<r){
            int mid = l+(r-l)/2;
            while((nums[l] == nums[mid]) && (nums[r] == nums[mid]) ) {
                ++l; --r;
                if(l>=nums.length || r<0) break;
            }
            if(l==r) return nums[l];
            else if(l>r) return nums[r+1];
            if(nums[mid] > nums[r]) l = mid+1;
            else r = mid;
        }
        return nums[l];
   }

follow up: find the minimum value index

 

Other thoughts for this problem: if(nums[mid] == nums[r]) h--; /./skip the current high one..

好难得二分查找。。。。

 to be continued... 

 

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

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