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.
题目中排序数组中可能会存在部分重复的元素,因此在判断上会有所不同
class Solution {
public:
/*int findMin(vector<int>& nums) {
int n = nums.size();//暴力求解o(n)
int result = 0;
if(n <=0) return result;
result = nums[0];
for(int i=1;i<n;i++)
{
if(nums[i]<result)
result = nums[i];
}
return result;
}*/
int findMin(vector<int>& nums) {
if(nums.size()==1) return nums[0];
int start = 0;
int last = nums.size()-1;
int middle = 0;
if(nums[start]<nums[last]) return nums[middle];
while(nums[start]>= nums[last]&&start<last)
{
int middle = start+(last-start)/2;
if(nums[middle]>nums[start])
start = middle+1;
else if(nums[middle] == nums[start])
start++;
else
last = middle;
}
return nums[start];
}
};