3285、找到稳定山的下标
3285、[简单] 找到稳定山的下标
1、题目描述
有 n
座山排成一列,每座山都有一个高度。给你一个整数数组 height
,其中 height[i]
表示第 i
座山的高度,再给你一个整数 threshold
。
对于下标不为 0
的一座山,如果它左侧相邻的山的高度 严格大于 threshold
,那么我们称它是 稳定 的。我们定义下标为 0
的山 不是 稳定的。
请你返回一个数组,包含所有 稳定 山的下标,你可以以 任意 顺序返回下标数组。
2、解题思路
要解决这个问题,我们需要遍历所有的山(从下标 1 开始),检查其左侧相邻山的高度是否严格大于 threshold
。如果满足条件,则将该山的下标添加到结果数组中。最终,我们返回所有满足条件的下标。
具体步骤
- 初始化结果数组: 用于存储所有稳定山的下标。
- 遍历山: 从下标 1 开始遍历(因为下标 0 的山不被视为稳定山),检查当前山的左侧相邻山的高度是否大于
threshold
。 - 检查条件: 如果条件满足,将当前山的下标加入结果数组。
- 返回结果: 输出结果数组。
3、代码详解
class Solution {
public:
vector<int> stableMountains(vector<int>& height, int threshold) {
vector<int> ret; // 初始化结果数组
int n = height.size(); // 获取山的总数
for (int i = 1; i < n; i++) { // 从下标 1 开始遍历
if (height[i - 1] > threshold) { // 检查左侧相邻山的高度是否大于 threshold
ret.push_back(i); // 满足条件,加入结果数组
}
}
return ret; // 返回结果数组
}
};