2951. 找出峰值

找出数组中的峰值

给你一个下标从 0 开始的数组 mountain 。你的任务是找出数组 mountain 中的所有 峰值

以数组形式返回给定数组中 峰值 的下标,顺序不限 。

注意

  • 峰值 是指一个严格大于其相邻元素的元素。
  • 数组的第一个和最后一个元素 是峰值。

示例 1

输入mountain = [2,4,4]
输出[]
解释mountain[0]mountain[2] 不可能是峰值,因为它们是数组的第一个和最后一个元素。mountain[1] 也不可能是峰值,因为它不严格大于 mountain[2]。因此,答案为 []

示例 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]

提示

  • 3 <= mountain.length <= 100
  • 1 <= mountain[i] <= 100

代码

c 复制代码
int* findPeaks(int* mountain, int mountainSize, int* returnSize) {
    int* res = (int*)malloc(sizeof(int) * (mountainSize - 2));
    *returnSize = 0;
    for (int i = 1; i < mountainSize - 1; i++)
    {
        if(mountain[i] > mountain[i-1] && mountain[i] > mountain[i+1])
        {
            res[(*returnSize)] = i;
            (*returnSize)++;
        }
    }
    return res;
}

代码分析

  1. 函数参数

    • int* mountain: 指向表示山脉的数组的指针。
    • int mountainSize: 数组的大小。
    • int* returnSize: 返回结果数组的大小。
  2. 变量初始化

    • int* res = (int*)malloc(sizeof(int) * (mountainSize - 2)): 为存储峰值下标的结果数组分配内存。结果数组的大小不会超过 mountainSize - 2
    • *returnSize = 0: 初始化返回结果数组的大小为 0。
  3. 遍历数组

    • for (int i = 1; i < mountainSize - 1; i++): 从数组的第二个元素遍历到倒数第二个元素。
  4. 检查峰值条件

    • if(mountain[i] > mountain[i-1] && mountain[i] > mountain[i+1]): 如果当前元素严格大于其相邻元素,则将其下标存入结果数组,并增加返回结果数组的大小。
  5. 返回结果

    • return res: 返回存储峰值下标的结果数组。

复杂度分析

  • 时间复杂度:O(n)

    • 该算法仅需遍历一次数组,因此时间复杂度为 O(n),其中 n 是数组 mountain 的长度。
  • 空间复杂度:O(n)

    • 该算法使用了一个额外的数组来存储峰值下标,因此空间复杂度为 O(n),其中 n 是数组 mountain 的长度。

结果

相关推荐
Georgewu2 小时前
【AI大模型入门指南】提示词Prompt工程详解
算法·aigc·ai编程
ZackSock7 小时前
Policy Gradient 极简教程
算法
Big_Yellow_J8 小时前
深入浅出了解生成模型-3:Diffusion模型原理以及代码
算法·面试
用户686916134909 小时前
哈希表实现指南:从原理到C++实践
数据结构·c++
ZackSock9 小时前
从零实现 RAG
算法
Jolyne_9 小时前
前端常用的树处理方法总结
前端·算法·面试
Frank_zhou11 小时前
算法-数组实战【合并区间】中等
数据结构
前端付豪12 小时前
微信视频号推荐系统揭秘:兴趣建模、多模态分析与亿级流控架构实战
前端·后端·算法
木杉苑12 小时前
快速幂算法
算法
梦境虽美,却不长13 小时前
算法 学习 排序 2025年6月16日10:25:37
数据结构·学习·排序算法