首页 > 其他 > 详细

153. Find Minimum in Rotated Sorted Array

时间:2020-03-21 14:14:37      阅读:42      评论:0      收藏:0      [点我收藏+]

问题:求被旋转了的排序数列中的最小值。

Example 1:
Input: [3,4,5,1,2] 
Output: 1

Example 2:
Input: [4,5,6,7,0,1,2]
Output: 0

  

方法:二分法查找

low=0,high=end index

mid=low和high的中间值

如果mid的数值>low的数值,则要求的最小值一定在mid~high之间(因为求最小值,不包含mid),那么下一次循环查找范围在mid~high之间,即让low=mid+1

反之如果mid<low的数值,则要求的最小值一定在low~mid之间(因为求最小值,包含mid),那么下一次循环查找范围在low~mid之间,即让high=mid

特:当low的值<high的值,那么low到high是顺序的,low为最小值,那么直接返回low。

 

参考代码:

 1 class Solution {
 2 public:
 3     int findMin(vector<int>& nums) {
 4         int low = 0, high = nums.size()-1;
 5         while(low<high){
 6             int mid = (low+high)/2;
 7             if(nums[low]<nums[high])
 8                 return nums[low];
 9             if(nums[mid]>=nums[low]){
10                 low=mid+1;
11             }else if(nums[mid]<=nums[high]){
12                 high=mid;
13             }
14         }
15         return nums[low];
16     }
17 };

 

153. Find Minimum in Rotated Sorted Array

原文:https://www.cnblogs.com/habibah-chang/p/12538877.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!