852. 山脉数组的峰顶索引

news/2024/10/11 9:55:22/

文章目录

  • 1.题目
  • 2.思路
  • 3.代码


1.题目

852. 山脉数组的峰顶索引

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

返回峰值元素的下标。

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

示例 1:

输入:arr = [0,1,0]
输出:1

示例 2:

输入:arr = [0,2,1,0]
输出:1

示例 3:

输入:arr = [0,10,5,2]
输出:1

2.思路

通过比较中间元素 nums[mid] 和其右侧元素 nums[mid + 1],如果 nums[mid] < nums[mid + 1],说明峰值在右侧,因此移动左指针;否则,峰值在左侧或当前中间元素处,因此移动右指针。最终,当左右指针相遇时,左指针的位置即为山脉数组的峰值索引。

3.代码

class Solution {
public:int peakIndexInMountainArray(vector<int>& nums) {// 初始化左右指针,left 指向数组的起始位置,right 指向数组的末尾int left = 0, right = nums.size() - 1;// 使用二分查找法,在左右指针重合之前不断缩小查找范围while (left <= right) {// 计算中间位置,避免直接相加可能导致整数溢出int mid = left + (right - left) / 2;// 如果中间位置的元素小于其右边的元素,说明峰值在右侧if (nums[mid] < nums[mid + 1]) {left = mid + 1;  // 将左指针移动到 mid 的右侧} else {// 否则,说明峰值可能在 mid 或其左侧right = mid - 1; // 将右指针移动到 mid 的左侧}}// 当循环结束时,left 指向的就是峰值所在的索引return left;}
};


http://www.ppmy.cn/news/1537382.html

相关文章

鸿蒙harmonyos next flutter混合开发之开发FFI plugin

创建FFI plugin summation&#xff0c;默认创建的FFI plugin是求两个数的和 flutter create --templateplugin_ffi summation --platformsandroid,ios,ohos 创建my_application flutter create --org com.example my_application 在my_application项目中文件pubspec.yaml引…

力扣 前缀和

找子数组的个数了解前缀和的基础。 前缀和大致理解为到达某个位置&#xff0c;前面几个数的总和&#xff0c;即s[i1]s[i]a[i1]&#xff0c;可以通过一次循环获得。然后几个前缀和作差&#xff0c;即可得到某个位置到某个位置的和&#xff0c;根据map的键值对进行更新次数。 题…

YOLOv11改进策略【损失函数篇】| 利用MPDIoU,加强边界框回归的准确性

一、背景 目标检测和实例分割中的关键问题&#xff1a; 现有的大多数边界框回归损失函数在不同的预测结果下可能具有相同的值&#xff0c;这降低了边界框回归的收敛速度和准确性。 现有损失函数的不足&#xff1a; 现有的基于 ℓ n \ell_n ℓn​范数的损失函数简单但对各种尺度…

鸿蒙NEXT开发-动画(基于最新api12稳定版)

注意&#xff1a;博主有个鸿蒙专栏&#xff0c;里面从上到下有关于鸿蒙next的教学文档&#xff0c;大家感兴趣可以学习下 如果大家觉得博主文章写的好的话&#xff0c;可以点下关注&#xff0c;博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…

SCRM呼叫中心高保真Axure原型 源文件分享

在数字化时代&#xff0c;客户关系管理&#xff08;CRM&#xff09;对于企业的成功至关重要。SCRM呼叫中心后台作为一款专为CRM设计的软件原型&#xff0c;致力于为企业提供高效、智能的客户沟通解决方案。本文将详细介绍该产品的核心功能及其对企业提升客户满意度和销售业绩的…

uniAPP是否可以做php语言书写后端的前端开发?

UniAPP可以做PHP语言书写后端的前端开发。以下是关于这个问题的详细解答&#xff1a; 一、UniAPP与后端开发的关系 前后端分离&#xff1a;UniAPP作为一款跨平台开发框架&#xff0c;采用了前后端分离的开发模式。这意味着前端和后端的开发可以独立进行&#xff0c;互不影响。…

继承--C++

文章目录 一、继承的概念及定义1、继承的概念 二、继承定义1、定义格式2、继承基类成员访问方式的变化3、继承类模板 三、基类和派生类间的转换1、继承中的作用域2、隐藏规则&#xff1a; 四、派生类的默认成员函数1、4个常见默认成员函数2、实现⼀个不能被继承的类 五、继承与…

第四范式发布全新一代文档数字化管理平台Smart Archive 2.0

产品上新 Product Release 今日&#xff0c;第四范式正式推出全新一代文档数字化管理平台——Smart Archive 2.0。该产品基于第四范式自研的文档处理大模型&#xff0c;实现零样本下对企业文档的精准识别及信息提取。文档处理大模型利用二十多个行业&#xff0c;上百种场景下的…