题解 | #寻找峰值#

寻找峰值

http://www.nowcoder.com/practice/fcf87540c4f347bcb4cf720b5b350c76

二分

二分查找的灵活运用,nums[mid]和nums[mid+1]进行比较。若nums[mid] < nums[mid+1],说明在上升,l = mid + 1;若nums[mid] > nums[mid+1],说明在下降,r = mid。

C++代码:

class Solution {
public:
    int findPeakElement(vector<int>& nums) {
        int l = 0, r = nums.size() - 1;
        while (l < r) {
            int mid = (l + r) / 2;
            if (nums[mid] < nums[mid + 1]) {
                l = mid + 1;
            } else {
                r = mid;
            }
        }
        return l;
    }
};
全部评论
错的吧。考虑数据[2,2,2,1,2],峰值下标应该是4. 但是你的程序结果是0.
点赞 回复 分享
发布于 2022-03-19 10:18

相关推荐

蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
10-17 12:16
同济大学 Java
7182oat:快快放弃了然后发给我,然后让我也泡他七天最后再拒掉,狠狠羞辱他一把😋
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务