当前位置: 首页 > article >正文

力扣面试150 寻找峰值 二分

Problem: 162. 寻找峰值
在这里插入图片描述

👨‍🏫 参考图解

在这里插入图片描述

class Solution {
    public int findPeakElement(int[] nums) {
        int l = 0;  // 初始化左边界,表示数组的起始位置
        int r = nums.length - 1;  // 初始化右边界,表示数组的结束位置

        // 当左边界和右边界没有重合时,持续二分查找
        while(l < r){
            // 计算中间位置,避免整数溢出(相当于 (l + r) / 2)
            int m = l + (r - l) / 2;

            // 判断当前位置的元素与右边相邻元素的关系
            if(nums[m] > nums[m + 1]){
                // 如果当前元素大于右边相邻的元素,说明中点处于一个“下坡”阶段,
                // 峰值可能在左侧(包括当前元素,因为它可能是一个峰值)
                r = m;  // 收缩右边界到中点位置,继续在左半部分查找
            } else {
                // 如果当前元素小于或等于右边相邻元素,说明中点处于“上坡”阶段,
                // 峰值一定在右侧区域
                l = m + 1;  // 左边界移动到中点的右侧,继续在右半部分查找
            }
        }

        // 最终,左右边界会收缩至同一点,此时该点一定是一个峰值
        return l;
    }
}

http://www.kler.cn/a/322548.html

相关文章:

  • STM32串口——5个串口的使用方法
  • BERT模型中的嵌入后处理与注意力掩码
  • 热点更新场景,OceanBase如何实现性能优化
  • 开源科学工程技术软件介绍 – EDA工具KLayout
  • SpringBoot配置相关的内容
  • 工厂模式-简单工厂模式
  • msvcr100.dll丢失的解决方法,六种解决msvcr100.dll丢失使用技巧
  • 黄金短线交易策略:波动中的高效盈利之法
  • Python精选200Tips:176-180
  • Java中的Junit、类加载时机与机制、反射、注解及枚举
  • CMake set_property设置全局变量属性
  • 基于TSN的实时通信网络延迟评估技术
  • HDF5文件浏览软件--H5View
  • SpringCloud 2023各依赖版本选择、核心功能与组件、创建项目(注意事项、依赖)
  • 网站建设服务器租用的优点有哪些?
  • 苹果更新过时产品:三款 Mac 成“古董”,九款 Mac 彻底“停产”
  • 前端框架对比选择:如何在众多技术中找到最适合你的
  • 如何优化模型性能,探讨过拟合与欠拟合问题
  • 优数:助力更高效的边缘计算
  • 【刷题2—滑动窗口】最大连续1的个数lll、将x减到0的最小操作数
  • 傅里叶级数在机器人中的应用(动力学参数辨识)
  • ubuntu 设置静态IP
  • FileZilla Server 黑白单移除
  • 基于Spring Boot+Vue的减肥健康管理系统设计和实现【原创】(BMI算法,协同过滤算法、图形化分析)
  • 类和对象(3)
  • spring-boot web + vue