题解 | #寻找牛群中的最高牛#

寻找牛群中的最高牛

https://www.nowcoder.com/practice/df826dd3f9304c61bb6e13fcf16652c3

考察的知识点:二分查找;

解答方法分析:

  1. 定义左边界变量 left 为数组的起始索引 0,右边界变量 right 为数组的末尾索引 heights.length - 1
  2. 在循环中,计算中间索引 mid,并将该索引的值与其相邻的右边元素 mid + 1 进行比较。
  3. 如果 heights[mid] > heights[mid + 1],说明峰值一定在当前 mid 的左侧,因此将右边界 right 更新为 mid
  4. 否则,说明峰值一定在当前 mid 的右侧,因此将左边界 left 更新为 mid + 1
  5. 循环继续,直到 left 不再小于 right
  6. 最后返回左边界 left,即为峰值的位置。

所用编程语言:C++;

完整编程代码:↓

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param heights int整型vector
     * @return int整型
     */
    int findPeakElement(vector<int>& heights) {
        int left = 0, right = heights.size() - 1;
        while (left < right) {
            int mid = left + (right - left) / 2;
            if (heights[mid] > heights[mid + 1]) {
                right = mid;
            } else {
                left = mid + 1;
            }
        }
        return left;
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 14:13
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务