剑指 Offer 11. 旋转数组的最小数字

题目链接

11. 旋转数组的最小数字

思路分析

利用二分查找即可。

class Solution {
public:
    int minArray(vector<int>& numbers) {
        std::ios::sync_with_stdio(false);
        int l = 0, r = numbers.size() - 1;
        while(r > 0 && numbers[r] == numbers[0]) r--;
        if(numbers[r] >= numbers[0]) return numbers[0];
        while(l < r){
            int mid = l + r >> 1;
            if(numbers[mid] < numbers[0]) r = mid;
            else l = mid + 1;
        }
        return numbers[l];
    }
};
posted @ 2021-03-30 20:15  蒟蒻颖  阅读(17)  评论(0编辑  收藏  举报