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

题目

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

代码

算法一

class Solution {
public:
    int minArray(vector<int>& numbers) {
        int res = numbers[0];
        for(int i = 1; i < numbers.size(); i++) {
            if(res > numbers[i]) {
                res = numbers[i];
                break;
            }
        }
        return res;
    }
};

算法二:二分

class Solution {
public:
    int minArray(vector<int>& numbers) {
        int n = numbers.size() - 1;
        while(n > 0 && numbers[n] == numbers[0])
            n--;
        if(numbers[n] >= numbers[0])
            return numbers[0];
        int l = 0, r = n;
        while(l < r) {
            int mid = l + r >> 1;
            if(numbers[mid] < numbers[0]) //不可取=
                r = mid;
            else
                l = mid + 1;
        }
        return numbers[l];
    }
};
posted @ 2022-04-19 15:39  当惜  阅读(23)  评论(0)    收藏  举报