首页 > 编程语言 > 详细

剑指offer-面试题11-旋转数组的最小数字-二分法

时间:2019-11-10 21:53:53      阅读:114      评论:0      收藏:0      [点我收藏+]
/*
题目:
	把一个数组最开始的若干个元素搬到数组末尾,我们称之为数组的旋转。
	输入一个递增排序的数组的旋转,输出旋转数组中的最小元素。
*/
/*
思路:
	采用二分的方法,旋转数组实质上是上左半部分为递减数组,右半部分为递增数组。
	取中间元素mid,若大于等于最右端的元素,则说明mid在左半部分,则low=mid+1;
	若小于最右端的元素,则说明mid在右半部分,则high = mid;
	
*/
int minNumberInRotateArray(vector<int> rotateArray) {
    int length = rotateArray.size();
    if( length== 0 ) return 0;
    int low = 0, high = length - 1, mid = 0;
    while(low < high){
        mid = low + ((high - low) >> 2);
        if(rotateArray[mid] >= rotateArray[high]){
            low = mid + 1;
        }else if(rotateArray[mid] < rotateArray[high]){
            high = mid;
        }
    }
    return rotateArray[low];
}

   

剑指offer-面试题11-旋转数组的最小数字-二分法

原文:https://www.cnblogs.com/buaaZhhx/p/11831696.html

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