凡科建站后属于自己的网站吗,芜湖网站建设公司,湖南网站设计外包服务,工程公司企业简介山脉数组的顶峰索引 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址#xff1a;点这里 2. 讲解算法原理 初始化两个指针 left 和 right#xff0c;分别指向数组的起始位置和结束位置。 进入循环#xff0c;循环条件为 left right。 在每次循环中… 山脉数组的顶峰索引 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址点这里 2. 讲解算法原理 初始化两个指针 left 和 right分别指向数组的起始位置和结束位置。 进入循环循环条件为 left right。 在每次循环中计算中间元素的索引 mid通过将左指针 left 和右指针 right 的差值除以2得到。 检查中间元素 arr[mid] 和其后一个元素 arr[mid1] 的大小关系。 如果 arr[mid] arr[mid1]说明峰值在中间元素的右侧将左指针 left 更新为 mid 1继续搜索右侧。 如果 arr[mid] arr[mid1]说明峰值在中间元素的左侧或者当前位置就是峰值。将右指针 right 更新为 mid继续搜索左侧。
当循环结束时左指针 left 指向的位置即为峰值的索引返回 left 即可得到峰值的位置。
3. 编写代码 class Solution
{
public:int peakIndexInMountainArray(vectorint 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;}
};