


这里需要判断是否为旋转数组,因为存在旋转后与原数组一致的情况,所以需要判断nums[0]是否大于nums[n-1],大于则为旋转数组,反之则不是
int findMin(vector<int>& nums)//解法1
{
int ret = INT_MAX;
for(auto e : nums)
{
if(e<ret) ret = e;
}
return ret;
}
int findMin(vector<int>& nums)//解法2:d为分界点
{
int n = nums.size();
int left = 0,right = n-1;
while(left < right)
{
int mid = left + (right - left)/2;
if(nums[mid]>nums[n-1]) left = mid + 1;
else right = mid;
}
return nums[right];
}
int findMin(vector<int>& nums)//解法3:a为分界点
{
int n = nums.size();
if(nums[0]<nums[n-1]) return nums[0];
int left = 0,right = n-1;
while(left < right)
{
int mid = left + (right - left)/2;
if(nums[mid]<nums[0]) right = mid;
else left = mid + 1;
}
return nums[right];
}