follow to "Find Minimum in rotated Sorted Array":
What if duplicates is allowed?
Would this affect the run-time complexity? How and why?
Suppose a sorted array is rotated on 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.
Public classSolution { Public intFindmin (int[] nums) { //Note: When mid equals left and equals right, you need to use the usual method to look for, other cases are the same as before//pay attention to the monotonically increasing processing if(nums==NULL|| nums.length<=0)return-1; intLeft=0; intRight=nums.length-1; if(Nums[left]<nums[right])returnNums[left];///// while(left<right-1){ intMid= (left+right)/2; if(nums[mid]==nums[left]&&nums[mid]==Nums[right]) { returnfind (Nums,left,right); } if(nums[mid]>=Nums[left]) { Left=mid; }Elseright=mid; } returnNums[right]; } Public intFindint[] Nums,intLeftintRight ) { intres=Nums[left]; for(inti=left+1;i<=right;i++){ if(res>Nums[i]) Res=Nums[i]; } returnRes; }}
[Leedcode 154] Find Minimum in rotated Sorted Array II