当前位置: 首页 > news >正文

LeetCode 2951.找出峰值:模拟(遍历)

【LetMeFly】2951.找出峰值:模拟(遍历)

力扣题目链接:https://leetcode.cn/problems/find-the-peaks/

给你一个下标从 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

解题方法:模拟(遍历)

i i i 1 1 1 m o u n t a i n . l e n g t h − 1 mountain.length - 1 mountain.length1进行枚举,如果 m o u n t a i n [ i ] > m o u n t a i n [ i − 1 ] mountain[i] \gt mountain[i - 1] mountain[i]>mountain[i1] m o u n t a i n [ i ] > m o u n t a i n [ i + 1 ] mountain[i]\gt mountain[i + 1] mountain[i]>mountain[i+1],就将 i i i添加到答案数组中。

小Tips: 将 i i i添加到答案数组中的同时,可以将 i + + i++ i++(因为下一个一定不是“峰值”元素)。

  • 时间复杂度 O ( m o u n t a i n . l e n g t h ) O(mountain.length) O(mountain.length)
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
class Solution {
public:vector<int> findPeaks(vector<int>& mountain) {vector<int> ans;for (int i = 1; i < mountain.size() - 1; i++) {if (mountain[i] > mountain[i - 1] && mountain[i] > mountain[i + 1]) {ans.push_back(i);i++;}}return ans;}
};
Go
// package mainfunc findPeaks(mountain []int) []int {ans := make([]int, 0)for i := 1; i < len(mountain) - 1; i++ {if mountain[i] > mountain[i - 1] && mountain[i] > mountain[i + 1] {ans = append(ans, i)i++}}return ans
}
Java
// import java.util.ArrayList;
// import java.util.List;class Solution {public List<Integer> findPeaks(int[] mountain) {List<Integer> ans = new ArrayList<>();for (int i = 1; i < mountain.length - 1; i++) {if (mountain[i] > mountain[i - 1] && mountain[i] > mountain[i + 1]) {ans.add(i);i++;}}return ans;}
}
Python
# from typing import Listclass Solution:def findPeaks(self, mountain: List[int]) -> List[int]:ans = []for i in range(1, len(mountain) - 1):if mountain[i] > mountain[i - 1] and mountain[i] > mountain[i + 1]:ans.append(i)return ans

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

Tisfy:https://letmefly.blog.csdn.net/article/details/139279605

相关文章:

  • windows ip助手函数了解
  • 前端本地项目启动供后端或者测试调试
  • Java实现图片保存到pdf的某个位置2
  • 基于Matlab的车道线检测系统 (文末有代码获取链接)【含Matlab源码 MX_001期】
  • C# WPF编程基础
  • 外汇天眼:风险预警!以下平台监管牌照被撤销!
  • 2024年5月22日 (周三) 叶子游戏新闻
  • 国产数据库替代加速 助力数字中国建设
  • firewalld
  • 小小字符串竟然如此嚣张 —— 聊聊 Java 的 String
  • 四川景源畅信:新人做抖店的成本很高吗?
  • C++容器之位集(std::bitset)
  • 3步找回丢失数据,EasyRecovery让数据恢复如此简单!
  • 骆驼大赛
  • Python燃气轮机汽车钢棒整流电路控制图统计模型过程潜力分析
  • 【译】JS基础算法脚本:字符串结尾
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Debian下无root权限使用Python访问Oracle
  • Django 博客开发教程 16 - 统计文章阅读量
  • fetch 从初识到应用
  • Go 语言编译器的 //go: 详解
  • GraphQL学习过程应该是这样的
  • PHP面试之三:MySQL数据库
  • python_bomb----数据类型总结
  • python学习笔记 - ThreadLocal
  • Python学习笔记 字符串拼接
  • text-decoration与color属性
  • 编写符合Python风格的对象
  • 程序员最讨厌的9句话,你可有补充?
  • 简单实现一个textarea自适应高度
  • 解析带emoji和链接的聊天系统消息
  • 力扣(LeetCode)21
  • 首页查询功能的一次实现过程
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 小程序测试方案初探
  • 小试R空间处理新库sf
  • 鱼骨图 - 如何绘制?
  • 怎样选择前端框架
  • 最近的计划
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​Java基础复习笔记 第16章:网络编程
  • # centos7下FFmpeg环境部署记录
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (LeetCode 49)Anagrams
  • (ZT)薛涌:谈贫说富
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (转)程序员疫苗:代码注入
  • (转载)hibernate缓存
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .NET 反射的使用
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET 使用 XPath 来读写 XML 文件