O(N)时间复杂度:顺序遍历数组
class Solution {
public:
int findMin(vector<int>& nums) {
int pos=findPos(nums);
return nums[pos];
}
int findPos(vector<int>& nums)
{
int flag=0;
for(int i=1;i<nums.size();i++)
{
if(nums[i]<nums[i-1])
return i;
}
return flag;
}
};
二分法:
int findMin(vector<int>& nums) {
int left = 0 , right = nums.size()-1;
int mid;
while(left<right-1)
{
if(nums[left]<nums[right])
break;
mid = left+(right-left)/2;
if(nums[left]>nums[mid])
right = mid;
else
{
left = mid;
}
}
return min(nums[left],nums[right]);
}