【二分查找】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;
    }
}
相关推荐
凌肖战8 分钟前
力扣网编程55题:跳跃游戏之逆向思维
算法·leetcode
88号技师1 小时前
2025年6月一区-田忌赛马优化算法Tianji’s horse racing optimization-附Matlab免费代码
开发语言·算法·matlab·优化算法
前端小巷子1 小时前
Web开发中的文件上传
前端·javascript·面试
ゞ 正在缓冲99%…1 小时前
leetcode918.环形子数组的最大和
数据结构·算法·leetcode·动态规划
上单带刀不带妹2 小时前
手写 Vue 中虚拟 DOM 到真实 DOM 的完整过程
开发语言·前端·javascript·vue.js·前端框架
前端风云志2 小时前
typescript结构化类型应用两例
javascript
Kaltistss2 小时前
98.验证二叉搜索树
算法·leetcode·职场和发展
知己如祭2 小时前
图论基础(DFS、BFS、拓扑排序)
算法
mit6.8243 小时前
[Cyclone] 哈希算法 | SIMD优化哈希计算 | 大数运算 (Int类)
算法·哈希算法
c++bug3 小时前
动态规划VS记忆化搜索(2)
算法·动态规划