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

日拱一卒(16)——leetcode学习记录:山脉数组峰值索引

一、题目

给定一个长度为 n 的整数 山脉 数组 arr ,其中的值递增到一个 峰值元素 然后递减。

返回峰值元素的下标。

你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。

二、分析

要求是O(log(n))的时间复杂度,那么应该采用二分法。具体是找到最大的元素的一半,直至找到峰顶元素。这里实现的细节值得推敲,包括终止条件、判断条件的设置。

O(log(n))的时间复杂度的理解,假设k次二分后范围缩小到1,那么n/2^k = 1,可以求解k是log2(n)

三、题解

class Solution:

    def peakIndexInMountainArray(self, arr: List[int]) -> int:

        left,right = 0,len(arr)-1

        while left+1 < right:

            mid = (left+right)//2

            if arr[mid] < arr[mid+1]:

                left = mid

            else:

                right = mid

        return right


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

相关文章:

  • OpenEuler学习笔记(八):安装OpenEuler
  • k8s优雅重启
  • k8s使用nfs持久卷
  • IP协议格式
  • 数据结构:二叉树
  • 鸿蒙仓颉环境配置(仓颉SDK下载,仓颉VsCode开发环境配置,仓颉DevEco开发环境配置)
  • CTF知识集-SQL注入
  • oracle创建用户,并授权dba权限
  • RabbitMQ基本使用以及整合Java项目
  • linux上qt打包(二)
  • Windows环境 (Ubuntu 24.04.1 LTS ) 国内镜像,用apt-get命令安装RabbitMQ,java代码样例
  • Windows server服务器之网络安全管理(防火墙入站规则创建)
  • C# 23种设计模式(4)访问者模式(Visitor Pattern)
  • @pytest.fixture() 跟 @pytest.fixture有区别吗?
  • 机器学习实战31-基于机器学习算法对某年福州市各初中重点高中录取率进行数学分析,评估性价比较高的学校。
  • 探索 PIE 在 ESP32-P4 上的应用
  • 找出一个数组中出现次数最多的那个元素。:哈希表:JAVA
  • SQL, 将分段数不确定的字符串拆分成多列
  • Android之RecyclerView显示数据列表和网格
  • 2024-12-16 装有Ubuntu系统的移动硬盘使用windows系统对其进行格式化
  • SpringDataJpa-字段加解密存储
  • webpack打包流程及原理
  • LeetCode 283.移动零(超简单讲解)
  • 鸿蒙权限请求工具类
  • 力扣-图论-15【算法学习day.65】
  • 【PyTorch】实现在训练过程中自定义动态调整学习率