【二分查找】162. 寻找峰值

162. 寻找峰值

解题思路

  • 改造二分查找算法
  • 如果nums[mid] > nums[mid + 1] 说明左侧存在较大的峰值
  • 如果nums[mid] <= nums[mid + 1] 说明右侧存在较大的峰值
java 复制代码
class Solution {
    public int findPeakElement(int[] nums) {
        // 原始数组不是有序
        // 改造二分查找算法

        int left = 0;
        int right = nums.length - 1;

        while(left < right){
            int mid = left + (right - left) / 2;

            if(nums[mid] > nums[mid + 1]){
                // 说明左侧存在较大峰值
                right = mid;
            }else if(nums[mid] <= nums[mid + 1]){
                // 说明右侧存在较大峰值
                left = mid + 1;
            }
        }

        return left;
    }
}
相关推荐
资深低代码开发平台专家3 分钟前
厌倦JavaScript 框架桎梏?Still.js:用原生之力,解遗留系统之困
开发语言·javascript·ecmascript
纟 冬6 分钟前
Flutter & OpenHarmony 运动App运动目标设定组件开发
开发语言·javascript·flutter
2501_944446006 分钟前
Flutter&OpenHarmony应用内导航与路由管理
开发语言·javascript·flutter
星火开发设计8 分钟前
深度优先搜索(DFS)详解及C++实现
c++·学习·算法·计算机·深度优先·大学生·期末考试
_Kayo_16 分钟前
vue3 状态管理器 pinia 用法笔记1
前端·javascript·vue.js
2501_9462338921 分钟前
Flutter与OpenHarmony Tab切换组件开发详解
android·javascript·flutter
3秒一个大23 分钟前
LangChain 中的 Output 解析器与 Zod:用法与意义
javascript·langchain
KingRumn24 分钟前
玩转DBus命令行工具之gdbus使用
linux·算法
2501_9462338924 分钟前
Flutter与OpenHarmony订单详情页面实现
android·javascript·flutter
2501_9444460024 分钟前
Flutter&OpenHarmony日期时间选择器实现
前端·javascript·flutter