Find Minimum in Rotated Sorted Array II (Java)

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.

和find minimum in rotated sorted array I 的區別是和high比而不是和最後一個比,因爲最後幾個都很可能是一樣的數字。

Source

public class Solution {
    public int findMin(int[] num) {
        int low = 0, high = num.length - 1;
        
        while(low <= high){
        	int mid = low + ((high - low) >> 1);
        	if(num[mid] > num[high]) //***
        		low = mid + 1;
        	else if(num[mid] < num[high])
        		high = mid;
        	else high--;
        }
        return num[low];
    }
}


Test

    public static void main(String[] args){
    	int[] num = {1,1,0,1};
     	int b = new Solution().findMin(num);
     	System.out.println(b);
     	
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章