码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-04-04 15:11:59      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:array   pos   gen   https   cond   public   ...   com   with   

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)

标签:array   pos   gen   https   cond   public   ...   com   with   

原文地址:https://www.cnblogs.com/stiles/p/154B.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!