题解 | #寻找峰值#

寻找峰值

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

相关推荐

点赞 评论 收藏
分享
面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务