每日一题 162. 寻找峰值(中等,二分搜索)

在这里插入图片描述

二分搜索

  1. 关键在于,如果 mid 不是峰值索引,假设 mid + 1 大于 mid,显然 mid + 1 有可能是峰值索引,同理可知如果 mid + 1 不是,那么 mid + 2 就有可能是,以此类推,由于 num[n] 是负无穷,因此从 mid + 1 到数组末尾之间必定存在峰值索引
  2. 由 1 我们可以得到推论,当一个值不是峰值时,导致它不是峰值的那一边就必定存在峰值,因此二分得解
class Solution:
    def findPeakElement(self, nums: List[int]) -> int:
        l, r = 0, len(nums)
        while l < r:
            m = (l + r) >> 1
            if (m == len(nums) - 1 or nums[m] > nums[m + 1]) and (m == 0 or nums[m] > nums[m - 1]):
                return m
            if m != len(nums) - 1 and nums[m] <= nums[m + 1]:
                l = m
                continue
            r = m
        
        return l

相关推荐

  1. LeetCode每日.08(162.寻找峰值)

    2023-12-19 10:14:02       50 阅读
  2. 每日OJ_算法_二分查找⑥_力扣162. 寻找峰值

    2023-12-19 10:14:02       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-19 10:14:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-19 10:14:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-19 10:14:02       87 阅读
  4. Python语言-面向对象

    2023-12-19 10:14:02       96 阅读

热门阅读

  1. Wireshark在云计算中的应用

    2023-12-19 10:14:02       46 阅读
  2. flutter学习-day14-事件处理和通知

    2023-12-19 10:14:02       47 阅读
  3. C# 获取Excel里引用的外部其他excel文件清单

    2023-12-19 10:14:02       53 阅读
  4. Latex编译出来的pdf文件缺少参考文献和交叉引用

    2023-12-19 10:14:02       48 阅读
  5. 1641:【例 1】矩阵 A×B

    2023-12-19 10:14:02       42 阅读
  6. MySQL

    2023-12-19 10:14:02       49 阅读
  7. 【算法集训】基础数据结构:十、矩阵

    2023-12-19 10:14:02       71 阅读
  8. 登录测试用例详解

    2023-12-19 10:14:02       68 阅读
  9. leetcode242. 有效的字母异位词

    2023-12-19 10:14:02       59 阅读
  10. 怎么有效防护服务器被入侵

    2023-12-19 10:14:02       53 阅读
  11. 第二百一十四回

    2023-12-19 10:14:02       58 阅读