【二分查找】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;
    }
}
相关推荐
一条大祥脚16 分钟前
26.1.1
数据结构·算法
csuzhucong18 分钟前
圆柱三阶魔方、六棱柱魔方
算法
mit6.82427 分钟前
vector<int> dfs
算法
POLITE31 小时前
Leetcode 234.回文链表 JavaScript (Day 9)
javascript·leetcode·链表
ullio2 小时前
div1+2. 2178F - Conquer or of Forest
算法
老前端的功夫2 小时前
TypeScript 全局类型声明:declare关键字的深度解析与实战
linux·前端·javascript·ubuntu·typescript·前端框架
Leweslyh2 小时前
制导算法开发实践指南:从入门到精通
算法·开发·武器·制导律设计
EndingCoder2 小时前
TypeScript 入门:理解其本质与价值
前端·javascript·ubuntu·typescript·node.js
chushiyunen2 小时前
快慢双指针算法笔记
数据结构·笔记·算法
烟锁池塘柳02 小时前
一文总结模型压缩技术:剪枝、量化与蒸馏的原理、实践与工程思考
算法·机器学习·剪枝