Leetcode:2951.找出峰值
编辑
29
2024-05-28
Leetcode题目链接:707. 设计链表
题目描述
给你一个下标从 0 开始的数组 mountain
。你的任务是找出数组 mountain
中的所有 峰值。以数组形式返回给定数组中 峰值 的下标,顺序不限 。
注意:
峰值 是指一个严格大于其相邻元素的元素。
数组的第一个和最后一个元素 不 是峰值。
题目示例
示例一
输入:mountain = [2,4,4]
输出:[]
解释:mountain[0] 和 mountain[2] 不可能是峰值,因为它们是数组的第一个和最后一个元素。
mountain[1] 也不可能是峰值,因为它不严格大于 mountain[2] 。
因此,答案为 [] 。
示例二
输入:mountain = [1,4,3,8,5]
输出:[1,3]
解释:mountain[0] 和 mountain[4] 不可能是峰值,因为它们是数组的第一个和最后一个元素。
mountain[2] 也不可能是峰值,因为它不严格大于 mountain[3] 和 mountain[1] 。
但是 mountain[1] 和 mountain[3] 严格大于它们的相邻元素。
因此,答案是 [1,3] 。
解题思路
暴力枚举
创建存放最终结果的数组result,使用push_back()函数在尾部添加元素
根据题设条件,mountain数组中第一个和最后一个元素在任何情况下都不满足条件,循环从第二个元素开始,至倒数第二个元素结束
仅需一个if条件判断当前元素与前一个元素、后一个元素的大小关系,满足条件则将当前元素的下标加入result数组
完成循环得到的result数组即为数组中所有峰值元素的下标位置集合
我的答案
class Solution {
public:
vector<int> findPeaks(vector<int>& mountain) {
vector<int> result;
for(int i = 1; i <= mountain.size() - 2; i++) {
if(mountain[i] > mountain[i - 1] && mountain[i] > mountain[i + 1]) {
result.push_back(i);
}
}
return result;
}
};
提交结果
- 0
- 0
-
赞助
AliPayWeChat Pay -
分享