这个题目是二分搜索的变形题。
当然这个题目,可以利用遍历一遍数组来求解,但是时间复杂度就是O(n)了。这里我们用变体二分搜索的解法来求解这个题目。
//Time:O(log(n)),Space:O(1)
class Solution
{
public:
int findMin(vector<int>& nums)
{
int begin=0;
int end=nums.size()-1;
while(begin<end)
{
int mid=begin+(end-begin)/2;
if(nums[mid]>nums[end]) //mid位于左边递增序列中
{
begin=mid+1;
}
else //mid位于右边递增序列中
{
end=mid;
}
}
return nums[begin];
}
};