您的位置:首页 > 其它

leetcode Find Minimum in Rotated Array II

2016-07-11 20:12 337 查看
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.

有了重复数字的出现,主要考虑两个问题,一是外层循环的大于关系要变成大于等于,再有就是当二分查找的mid和begin出现相等时怎么办,应当将begin+1,代码:

public int findMin(int[] nums) {
if(nums.length==1) return nums[0];
int begin=0,end=nums.length-1;
while(begin<end&&nums[begin]>=nums[end]){
int mid=(begin+end)/2;
if(nums[mid]<nums[begin]) end=mid;
else if(nums[mid]==nums[begin]) begin+=1;
else begin=mid+1;
}
return nums[begin];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 算法