Find Minimum in Rotated Sorted Array II
Follow up for "Find Minimum in Rotated Sorted Array":
What if duplicates are allowed?
Would this affect the run-time complexity? How and why?
Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).
Find the minimum element.
The array may contain duplicates.
Analysis
与上一题相比,可能有重复元素,while中,可能出现nums[M]==nums[R]的情况。此时递增start或者递减end。
Code
public class Solution {
    public int findMin(int[] nums) {
        int L=0, R=nums.length-1;
        while(L < R && nums[L] >= nums[R]){
            int M = L + (R-L)/2;
            if (nums[M] > nums[R]) {L = M+1;}
            else if (nums[M] < nums[R]){R = M;}
            else {L++;} //or else {R--;}
        }
        return nums[L];
    }
}