LeetCode OJ Find Peak Element

来源:互联网 发布:紧急避孕药 知乎 编辑:程序博客网 时间:2024/05/04 23:36

二分。

class Solution {

public:

    int findPeakElement(const vector<int> &num) {

        if (num.size() <= 1) return 0;

        int l = 0, r = num.size() - 1, mid, s = num.size() - 1;

        while (l <= r) {

            mid = (l + r) / 2;

            if ((mid == 0 && num[mid] > num[mid + 1]) || (mid == s && num[mid - 1] < num[mid]) || (num[mid - 1] < num[mid] && num[mid] > num[mid + 1])) return mid;

            else if ((mid == 0 && num[mid] < num[mid + 1]) || (num[mid - 1] < num[mid] && num[mid] < num[mid + 1])) l = mid + 1;

            else if ((mid == s && num[mid - 1] > num[mid]) || (num[mid - 1] > num[mid] && num[mid] > num[mid + 1])) r = mid - 1;

            else r = mid - 1;

        }

    }

};

0 0
原创粉丝点击