剑指06旋转数组的最小数字

题目描述

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

 

class Solution {
public:
    int minNumberInRotateArray(vector<int> rotateArray) {
        if (rotateArray.empty())return 0;
        int left=0,right=rotateArray.size()-1;
        while (left<right){
            if (rotateArray[left]<rotateArray[right])   return rotateArray[left];
            int mid=left+(right-left)/2;
            if (rotateArray[left]<rotateArray[mid])
                left=mid+1;
            else if (rotateArray[mid]<rotateArray[right])
                right=mid;
            else {
                ++left;
            }
        }
        return rotateArray[left];
    }
};

import java.util.ArrayList;
public class Solution {
    public int minNumberInRotateArray(int [] array) {
    if (array.length==0)
        return 0;
    int left=0;
    int right=array.length-1;
    int middle=-1;
    while (array[left]>=array[right])
    {
        if (right-left==1){
             middle=right;
        break;
        }
           
    
        middle=left+(right-left)/2;
        if (array[middle]>=array[left]){
             left=middle;
        }
           
        if (array[middle]<=array[right]){
            right=middle;
        }

    }
    return array[middle];
}
}
# -*- coding:utf-8 -*-
class Solution:
    def minNumberInRotateArray(self, rotateArray):
        # write code here
        return min(rotateArray)

posted on 2020-07-30 09:24  滚雪球效应  阅读(88)  评论(0编辑  收藏  举报