男女做暖暖的网站大全,免费com域名网站,公司网站建设团队,如何重装wordpress【LetMeFly】2951.找出峰值#xff1a;模拟#xff08;遍历#xff09;
力扣题目链接#xff1a;https://leetcode.cn/problems/find-the-peaks/
给你一个下标从 0 开始的数组 mountain 。你的任务是找出数组 mountain 中的所有 峰值。
以数组形式返回给定数组中 峰值 的…【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 1001 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.length−1进行枚举如果 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]且 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]就将 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:vectorint findPeaks(vectorint mountain) {vectorint 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 ListInteger findPeaks(int[] mountain) {ListInteger 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和我的个人博客原创不易转载经作者同意后请附上原文链接哦~ Tisfyhttps://letmefly.blog.csdn.net/article/details/139279605