首页 > 其他分享 >162. 寻找峰值

162. 寻找峰值

时间:2025-01-09 10:11:59浏览次数:1  
标签:return nums mid 峰值 寻找 往上爬 len 162

  1. [题目链接](162. 寻找峰值 - 力扣(LeetCode))

  2. 解题思路:题目有一个很重要的前提是:对于所有有效的 i 都有 nums[i] != nums[i + 1]。先看开头和结尾,如果nums[0] > nums[1]或者nums[n - 1] > nums[n - 2],那么可以直接返回了。否则从左就是【往上爬的趋势】,从右也是【往上爬的趋势】,又因为每个数都不相同且一定有峰顶,那么峰顶可以在中间

    • 直接[i,j]二分,得到mid
      • 如果mid大于左右的结果,那么直接返回了
      • 如果nums[mid] < nums[mid - 1],从i往右开始,是往上爬的趋势,从mid开始往左,也是往上爬的趋势,所以左边肯定有一个峰顶,即j = mid - 1
      • 否则,i = mid + 1
  3. 代码

    class Solution:
        def findPeakElement(self, nums: List[int]) -> int:
            if len(nums) == 1:
                return 0
            if nums[0] > nums[1]:  # 如果第0位置大于第一位置,0位置就是峰值
                return 0
            if nums[-1] > nums[-2]:   # 如果最后一个位置大于倒数第二个位置,最后一个位置就是峰值
                return len(nums) - 1
    
            i = 0
            j = len(nums) - 1
            while i <= j:
                mid = math.trunc((i + j) / 2)
                if mid - 1 >= 0 and nums[mid] > nums[mid - 1] and mid + 1 < len(nums) and nums[mid] > nums[mid + 1]:
                    return mid
                if mid - 1 >= 0 and nums[mid] < nums[mid - 1]:
                    j = mid - 1
                else:
                    i = mid + 1
            return -1
    

标签:return,nums,mid,峰值,寻找,往上爬,len,162
From: https://www.cnblogs.com/ouyangxx/p/18661175

相关文章

  • 硬编码寻找序列号4
    下断点运行程序,输入8个1假码,点验证.ctrl+f9f8下断点运行程序,edx=1D再次运行,edx=1E再次运行,edx=1F运行,edx=44运行,edx=61运行,edx=51运行,edx=3C运行,edx=5B运行,edx=36运行,edx=55运行所有数值加14,即为真码.这里的最后数值e没出来,手动添加......
  • flask框架失踪人口寻找互助信息系统毕设源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于失踪人口寻找问题的研究,现有研究多集中在传统寻人手段以及公安机关等官方机构的寻人流程方面[1][2] 。专门针对构建互助信息系统......
  • 287. 寻找重复数
    寻找重复数给定一个包含n+1个整数的数组nums,其数字都在[1,n]范围内(包括1和n),可知至少存在一个重复的整数。假设nums只有一个重复的整数,返回这个重复的数。你设计的解决方案必须不修改数组nums且只用常量级O(1)的额外空间。示例1:输入:nums=[1,3,4,2,......
  • B4004 [GESP202406 三级] 寻找倍数
    题目描述小杨有一个包含 ......
  • 寻找两个正序数组的中位数(二分查找)
    给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log(m+n)) 。 示例1:输入:nums1=[1,3],nums2=[2]输出:2.00000解释:合并数组=[1,2,3],中位数2示例2:输入:nums1=[1......
  • 寻找旋转排序数组中的最小值(二分查找)
    已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums=[0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0],a[1],a[2],...,a[n-1......
  • 162. 寻找峰值
    寻找峰值峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设nums[-1]=nums[n]=-∞。你必须实现时间复杂度为O(logn)的算法来解决此问题。示......
  • 当QPS达到峰值的时候应该如何处理
    QPS(QueriesPerSecond)的定义QPS是指每秒查询率,在前端领域,它用于衡量服务器在一秒内能够响应的请求数量。例如,一个网站每秒能够处理100个用户的页面访问请求,那么这个网站的QPS就是100。它是评估系统性能的一个重要指标,能够帮助开发者了解系统在高负载情况下的表现。计算QPS的......
  • 10个技巧,3分钟教会你github高效寻找开源项目(转)
    作为程序员,不论是开发还是学习,肯定会用到开源项目,那么怎么快速在开源网站找到这些项目呢?常用的开源网站有:github和giteegithub是全球最大的开源社区,今天就以github为例,演示一下github界面一般来说,优秀的项目,维护会比较频繁,提交数也就会多一点。当然,一个好的项目,......
  • Python+Django宠物援助平台\宠物领养系统\宠物服务寻找丢失宠物--(Pycharm Flask Dj
    收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我项目介绍基于Python+Django的流浪动物宠物救助援助平台的开发背景,深刻反映了当代社会对动物福利的关注提升、技术进步的赋能作用,以及社会公益需求的日益增长。近年来,随着社会的进步和人们文化素质的提高,越来越多的公众开......