执行结果:通过
题目: 3258 找到稳定山的下标
有 n
座山排成一列,每座山都有一个高度。给你一个整数数组 height
,其中 height[i]
表示第 i
座山的高度,再给你一个整数 threshold
。
对于下标不为 0
的一座山,如果它左侧相邻的山的高度 严格大于 threshold
,那么我们称它是 稳定 的。我们定义下标为 0
的山 不是 稳定的。
请你返回一个数组,包含所有 稳定 山的下标,你可以以 任意 顺序返回下标数组。
示例 1:
输入:height = [1,2,3,4,5], threshold = 2
输出:[3,4]
解释:
- 下标为 3 的山是稳定的,因为
height[2] == 3
大于threshold == 2
。 - 下标为 4 的山是稳定的,因为
height[3] == 4
大于threshold == 2
.
示例 2:
输入:height = [10,1,10,1,10], threshold = 3
输出:[1,3]
示例 3:
输入:height = [10,1,10,1,10], threshold = 10
输出:[]
提示:
2 <= n == height.length <= 100
1 <= height[i] <= 100
1 <= threshold <= 100
代码以及解题思路
代码:
int* stableMountains(int* height, int heightSize, int threshold, int* returnSize) {
int *arr = (int*)malloc(sizeof(int)*100);
int num = 0;
for(int i =0;i<heightSize-1;i++)
{
if(height[i] > threshold)
{
arr[num] = i+1;
num++;
}
}
*returnSize = num;
return arr;
}
解题思路:
-
分配内存:首先,代码通过
malloc
为结果数组arr
分配了足够的内存空间(这里假设最多有100个符合条件的索引,这是一个硬编码的假设,可能需要根据实际情况调整)。 -
初始化计数器:变量
num
用于记录符合条件(即高度大于threshold
)的索引数量。 -
遍历高度数组:通过一个循环遍历输入的高度数组
height
(除了最后一个元素,因为无法判断其后的高度变化)。 -
检查阈值:对于每个高度,如果它大于给定的
threshold
,则将该高度的索引(注意,索引从1开始计数,因为代码中使用i+1
)存储到结果数组arr
中,并增加计数器num
。 -
设置返回大小:通过指针
returnSize
,函数返回符合条件的索引数量。 -
返回结果数组:最后,函数返回指向结果数组
arr
的指针。