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

leetcode 852 山脉数组的顶峰索引

一、题目描述

二、解题思路

整体思路:

“顶峰”可以将向量划分成两个部分,“顶峰”及其右侧的数均为上升趋势,“顶峰”左侧的数均为下降趋势,满足“二段性”,可以使用二分法来解决这个问题,实质上是查找左区间。

具体思路:

(1)首先进行边界处理,如果数组为空,表示无法找到“顶峰”,返回0;

(2)二分查找左边界

 //查找左边界
int left=0,right=arr.size()-1;
while(left<right){
int mid=left+(right-left)/2;
if(arr[mid]<=arr[mid+1]) left=mid+1;
else if(arr[mid]>=arr[mid+1]) right=mid;
}

三、代码实现

解法一:暴力解法

class Solution {
public:int peakIndexInMountainArray(vector<int>& arr) {//边界处理if(arr.empty()) return 0;int start;for(start=1;arr[start]<arr[start+1];start++);return start;}
};

解法二:二分法查找左边界

class Solution {
public:int peakIndexInMountainArray(vector<int>& arr) {//边界处理if(arr.empty()) return 0;//查找左边界int left=0,right=arr.size()-1;while(left<right){int mid=left+(right-left)/2;if(arr[mid]<=arr[mid+1]) left=mid+1;else if(arr[mid]>=arr[mid+1]) right=mid;}return left;}
};

http://www.dtcms.com/a/347495.html

相关文章:

  • 讲点芯片验证中的统计覆盖率
  • 【URP】[平面阴影]原理与实现
  • 如何使用和优化SQL Server存储过程:全面指南
  • 论文阅读:arxiv 2025 Can You Trick the Grader? Adversarial Persuasion of LLM Judges
  • 【数据分享】地级市对外开放程度(2002-2021)-有缺失值
  • SpringBoot自动装配原理深度解析
  • 【LeetCode 热题 100】300. 最长递增子序列——(解法一)记忆化搜索
  • mmap映射物理内存之四内核cache同步
  • 后台管理系统-14-vue3之tag标签页的实现
  • JEI(Journal of Electronic lmaging)SCI四区期刊
  • TypeScript的接口 (Interfaces)讲解
  • Python 版本与 package 版本兼容性检查方法
  • 定时任务——ElasticJob原理
  • ChipCamp探索系列 -- 4. Intel CPU的十八代微架构
  • 【背诵2025】测试
  • 数据结构与算法——树和二叉树
  • 【科研绘图系列】浮游植物的溶解性有机碳与初级生产力的关系
  • 大麦APP抢票
  • 数据结构 之 【AVL树的简介与部分实现】(部分实现只涉及AVL树的插入问题,包括单旋((右单旋、左单旋))、双旋(左右单旋、右左单旋)等操作)
  • 国家自然科学基金(国自然基金)申请技巧详解
  • materials studio中的两种坐标系
  • 基于RISC-V架构的国产MCU在eVTOL领域的应用研究与挑战分析
  • leetcode(同向双指针 滑动窗口)209.长度最小的子数组 713.乘积小于K的子数组 3.无重复字符的最长子串
  • 随机森林1
  • 12 SQL进阶-锁(8.20)
  • 我从零开始学习C语言(14)- 基本类型 PART1
  • FRP 内网穿透全流程部署指南 (Windows/Linux)
  • 不必使用 == 和 ===,更严格的相等性判断 API 来了
  • DFT计算入门(materials studio)---Ni金属表面,几何优化
  • 求职推荐大数据可视化平台招聘系统 Vue+Flask python爬虫 前后端分离