Please enable Javascript to view the contents

剑指office(六)用两个栈实现队列

 ·  ☕ 1 分钟  ·  🎅 YSL

题目描述

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

示例1

输入

[3,4,5,1,2]

返回值

1
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public:
    int minNumberInRotateArray(vector<int> rotateArray) {
        if(rotateArray.size()==0)
            return 0;
        int first = 0;
        int last = rotateArray.size()-1;
        int mid = 0;
        while(last!=first)
        {
            mid = floor((first + last)/2);
            if(rotateArray[last]>rotateArray[mid])
                last = mid;
            else if(rotateArray[first]<rotateArray[mid])
                first = mid+1;
            else
                first++;
        }
        return rotateArray[last];
    }
};