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

【二分查找】寻找峰值(medium)

6. 寻找峰值(medium)

  • 题⽬描述:
  • 解法⼆(⼆分查找算法):
    • 算法思路:
    • C++ 算法代码:
    • Java 算法代码:

题⽬链接:162. 寻找峰值

题⽬描述:

峰值元素是指其值严格⼤于左右相邻值的元素。
给你⼀个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何⼀个峰值 所在位置即可。
你可以假设 nums[-1] = nums[n] = -∞ 。
你必须实现时间复杂度为 O(log n) 的算法来解决此问题。
⽰例 1
输⼊:nums = [1,2,3,1]
输出:2
解释:3 是峰值元素,你的函数应该返回其索引 2。
⽰例 2
输⼊:nums = [1,2,1,3,5,6,4]
输出:1 或 5
解释:你的函数可以返回索引 1,其峰值元素为 2;
或者返回索引 5, 其峰值元素为 6。
提⽰
1 <= nums.length <= 1000
-231 <= nums[i] <= 231 - 1
对于所有有效的 i 都有 nums[i] != nums[i + 1]

解法⼆(⼆分查找算法):

算法思路:

寻找⼆段性:
任取⼀个点 i ,与下⼀个点 i + 1 ,会有如下两种情况:
• arr[i] > arr[i + 1] :此时「左侧区域」⼀定会存在⼭峰(因为最左侧是负⽆穷),那么我们可以去左侧去寻找结果;
• arr[i] < arr[i + 1] :此时「右侧区域」⼀定会存在⼭峰(因为最右侧是负⽆穷),那么我们可以去右侧去寻找结果。
当我们找到「⼆段性」的时候,就可以尝试⽤「⼆分查找」算法来解决问题。

C++ 算法代码:

class Solution{
public:int peakIndexInMountainArray(vector<int>& arr){int left = 1, right = arr.size() - 2;while(left < right){int mid = left + (right - left + 1) / 2;if(arr[mid] > arr[mid - 1]) left = mid;else right = mid - 1;}return left;}
}

Java 算法代码:

class Solution{public int peakIndexInMountainArray(int[] arr) {int left = 1, right = arr.length - 2;while(left < right){int mid = left + (right - left + 1) / 2;if(arr[mid] > arr[mid - 1]) left = mid;else right = mid - 1;}return left;}
}
http://www.xdnf.cn/news/2687.html

相关文章:

  • 学生管理系统审计
  • 从零开始的二三维CAD软件开发: 系列经验分享-写在开头
  • TensorFlow深度学习实战——基于循环神经网络的文本生成模型
  • ExoPlayer 中的 Timeline、Period 和 Window
  • shell--数组、正则表达式RE
  • Flutter 学习之旅 之 flutter 作为 module ,在 Android 端主动唤起 Flutter 开发的界面 简单的整理
  • gitgitgit!
  • 关于CentOS7学习过程中遇到的一些问题
  • JAVA-StringBuilder使用方法
  • 文号验证-同时对两个输入框验证
  • Android开发,实现一个简约又好看的登录页
  • 谷歌浏览器js获取html宽度不准
  • 聊聊spring-boot-data-redis使用过程中的困惑(序列化,反序列化,Jackson, JavaType, TypeReference)
  • 第1篇:Egg.js框架入门与项目初始化
  • [leetcode]2302.统计得分小于k的子数组
  • HTML5 WebSocket:实现高效实时通讯
  • Win11安装Ubuntu20.04简记
  • 软件工程(二):开发模型
  • 传统农耕展陈如何突破?数字多媒体能否重构文化体验边界?
  • 为什么MySQL推荐使用自增主键?
  • 鼠标滚动字体缩放
  • deepseek对IBM MQ SSL 证书算法的建议与解答
  • vue跨域问题总结笔记
  • 论文阅读_Citrus_在医学语言模型中利用专家认知路径以支持高级医疗决策
  • 2025 SAP专精特新企业高峰论坛 | 工博科技以SAP公有云+AI赋能新质生产力​
  • Linux系统管理与编程14:Shell变量及定制bash登录界面
  • 目标检测YOLO实战应用案例100讲- 无人机平台下露天目标检测与计数
  • 铭记之日(3)——4.28
  • 【知识科普】今天聊聊CDN
  • Go 1.24 is released(翻译)