力扣:2210. 统计数组中峰和谷的数量

Leetcode 2210. 统计数组中峰数量(可以,已解决) 给你一个下标从 0 开始的整数数组 nums 。如果两侧距 i 最近的不相等邻居的值均小于 nums[i] ,则下标 i 是 nums 中,某个峰的一部分。类似地,如果两侧距 i 最近的不相等邻居的值均大于 nums[i] ,则下标 i 是 nums 中某个的一部分。对于相邻下标 i j ,如果 nums[i] == nums[j] , 则认为这两下标属于 同一个 峰或。注意,要使某个下标所做峰或的一部分,那么它左右两侧必须 都 存在不相等邻居。返回 nums 中峰数量。示例 1: 示例 2 阅读详情

目录

一.题目

二.解题思路

三.代码

四.题后语


一.题目

        1.题目详情

        给你一个下标从 0 开始的整数数组 nums 。如果两侧距 i 最近的不相等邻居的值均小于 nums[i] ,则下标 i 是 nums 中,某个峰的一部分。类似地,如果两侧距 i 最近的不相等邻居的值均大于 nums[i] ,则下标 i 是 nums 中某个谷的一部分。对于相邻下标 i 和 j ,如果 nums[i] == nums[j] , 则认为这两下标属于 同一个 峰或谷。

        注意,要使某个下标所做峰或谷的一部分,那么它左右两侧必须  存在不相等邻居。

        要求:返回 nums 中峰和谷的数量。

示例 1:

输入:nums = [2,4,1,1,6,5]
输出:3
解释:
在下标 0 :由于 2 的左侧不存在不相等邻居,所以下标 0 既不是峰也不是谷。
在下标 1 :4 的最近不相等邻居是 2 和 1 。由于 4 > 2 且 4 > 1 ,下标 1 是一个峰。
在下标 2 :1 的最近不相等邻居是 4 和 6 。由于 1 < 4 且 1 < 6 ,下标 2 是一个谷。
在下标 3 :1 的最近不相等邻居是 4 和 6 。由于 1 < 4 且 1 < 6 ,下标 3 符合谷的定义,但需要注意它和下标 2 是同一个谷的一部分。
在下标 4 :6 的最近不相等邻居是 1 和 5 。由于 6 > 1 且 6 > 5 ,下标 4 是一个峰。
在下标 5 :由于 5 的右侧不存在不相等邻居,所以下标 5 既不是峰也不是谷。
共有 3 个峰和谷,所以返回 3 。

2210. 统计数组中峰和谷的数量 - 力扣(Leetcode)https://leetcode.cn/problems/count-hills-and-valleys-in-an-array/description/

二.解题思路

        1.通过for循环遍历数组

        2.通过while判断数值是否一致

        3.判断是否为锋或谷

        4.i直接跳到j所在的位置

        5.返回结果

三.代码

class Solution {
    public int countHillValley(int[] nums) {
        int len=nums.length;
        int ans=0;
        for(int i=1;i<len-1;){
            int j=i+1;
            while(nums[i]==nums[j]&&j<len-1)j++;
            if(nums[i-1]<nums[i]&&nums[j]<nums[i])
                ans+=1;
            if(nums[i-1]>nums[i]&&nums[j]>nums[i])
                ans+=1;
            i=j;
        }
        return ans;
    }
}

四.题后语(

         这到题没什么,只要根据题意来设置几个判断就可以了,然后比较值得注意的地方就是连续相同数值的时候,这里我用的是while来让j往下走,然后走到第一个不同的就退出来进行峰谷判断,随后让i直接到j,这样就保证了i的前一个一定是上一个不同的数据,然后就只要往后找不同的数据就好了,最后j是要小于len-1的且i也是从1开始,因为数组的开头和末尾必不可能是一个锋或谷在这道题里面。

Java 值输入数组长度n,并输入n个数,统计数组中的值个数。(一个数若小于相邻的数则称为数组值,若没有相邻的值也算值)输入用例:输出用例:输入用例:输出用例:输入用例:输出用例:...... 阅读详情

相关推荐

6027. 统计数组中峰数量

给你一个下标从0开始的整数数组nums。如果两侧距i最近的不相等邻居的值均小于nums[i],则下标i是nums中,某个峰的一部分。类似地,如果两侧距i最近的不相等邻居的值均大于nums[i],则下标i是nums中某个的一部分。对于相邻下标ij,如果nums[i] == nums[j], 则认为这两下标属于同一个峰或。 注意,要使某个下标所做峰或的一部分,那么它左右两侧必须都存在不相等邻居。 返回nums中峰数量。 示例...

stay hungry ! stay foolish! 698

数据结构算法数组寻找峰值&&分而治之

数据结构算法之寻找峰值&&二分查找本质

weixin_73233099的博客 2398

数组中涉及的常见算法: 4、数组元素的排序算法(冒泡排序、快速排序)

数组元素的排序算法 排序的定义: 假设含有n个记录的序列为{R1,R2,…,Rn},其相应的关键字序列为{K1,K2,…,Kn}。将这些记录重新排序为{Ri1,Ri2,…,Rin},使得相应的关键字值满足条Ki1<=Ki2<=…<=Kin,这样的一种操作称为排序。 通常来说,排序的目的是快速查找。 衡量排序算法的优劣: 1.时间复杂度:分析关键字的比较次数记录的移动次数...

qq_45766098的博客 429

数据结构算法】查找波峰或者波

给定一个没有重复数字的数组,找出里面的波峰或者波,没有返回-1。如果有,那么波峰波的两侧是单调的。 思路是二分查找。返回的条件是找到的中间值比两边都大或者比两边都小。那么如果不满足就需要查找左边或者右边。在判断左右之前,我们需要先判断数组的类型,是包含波峰还是波,方法是检测前两个值,如果a[0]>a[1],那么是找波,否则找波峰。 下面只看波峰的情况,如果a[m-1] 这是存在波峰

u010900754的专栏 2万+

LeetCode: 2210. 统计数组中峰数量 + 模拟】

摘要 本文介绍了如何统计数组中峰数量。峰是指某元素比左右相邻不相等元素都大,则相反。通过模拟法,跳过重复元素,找到每个元素的左右边界,判断其是否为峰或。代码实现中,遍历数组时处理重复元素,并检查当前元素是否满足峰或的条件。最终返回峰的总数。该方法高效且直观,适用于给定约束条件。 关键词:算法数组、峰、模拟、重复元素处理

Coder_ljw的博客 1054

LeetCode 2210.统计数组中峰数量:一次遍历(记录上一个不同的数)

LeetCode 2210.统计数组中峰数量:一次遍历(记录上一个不同的数) 给你一个下标从 0 开始的整数数组 nums 。如果两侧距 i 最近的不相等邻居的值均小于 nums[i] ,则下标 i 是 nums 中,某个峰的一部分。类似地,如果两侧距 i 最近的不相等邻居的值均大于 nums[i] ,则下标 i 是 nums 中某个的一部分。对于相邻下标 i j ,如果 nums[i] == nums[j] , 则认为这两下标属于 同一个 峰或。 注意,要使某个下标所做峰或的一部分,那么

<font color="Pink">Tisfy的博客</font> 1030

leetcode:2210. 统计数组中峰数量(python3解法)

leetcode:2210. 统计数组中峰数量(python3解法)

qq_41905051的博客 437

LeetCode 2210. 统计数组中峰数量

文章目录1. 题目2. 解题 1. 题目 给你一个下标从 0 开始的整数数组 nums 。如果两侧距 i 最近的不相等邻居的值均小于 nums[i] ,则下标 i 是 nums 中,某个峰的一部分。 类似地,如果两侧距 i 最近的不相等邻居的值均大于 nums[i] ,则下标 i 是 nums 中某个的一部分。 对于相邻下标 i j ,如果 nums[i] == nums[j] , 则认为这两下标属于 同一个 峰或。 注意,要使某个下标所做峰或的一部分,那么它左右两侧必须 都 存在不相等邻居。 返

Michael是个半路程序员 541

python-leetcode-2210. 统计数组中峰数量

因为这些属于同一个峰或。:通过比较不连续相等值之间的变化趋势,来判断是“峰”还是“”。:每次趋势发生“升到降”或“降到升”的变化时,说明出现了一个峰或

Lucy_wzw的博客 437

leetcode 2210. 统计数组中峰数量 简单

由于 1 < 4 且 1 < 6 ,下标 3 符合的定义,但需要注意它下标 2 是同一个的一部分。在下标 0 :由于 2 的左侧不存在不相等邻居,所以下标 0 既不是峰也不是。在下标 5 :由于 5 的右侧不存在不相等邻居,所以下标 5 既不是峰也不是。在下标 0 :由于 6 的左侧不存在不相等邻居,所以下标 0 既不是峰也不是。在下标 1 :由于 6 的左侧不存在不相等邻居,所以下标 1 既不是峰也不是。在下标 5 :由于 1 的右侧不存在不相等邻居,所以下标 5 既不是峰也不是

2401_88085478的博客 249

leetcode2210. 统计数组中峰数量

由于 1 < 4 且 1 < 6 ,下标 3 符合的定义,但需要注意它下标 2 是同一个的一部分。在下标 0 :由于 2 的左侧不存在不相等邻居,所以下标 0 既不是峰也不是。在下标 5 :由于 5 的右侧不存在不相等邻居,所以下标 5 既不是峰也不是。在下标 0 :由于 6 的左侧不存在不相等邻居,所以下标 0 既不是峰也不是。在下标 1 :由于 6 的左侧不存在不相等邻居,所以下标 1 既不是峰也不是。在下标 5 :由于 1 的右侧不存在不相等邻居,所以下标 5 既不是峰也不是

Turboyiyi的博客 411

2210.统计数组中峰数量

该问题要求统计数组中峰数量。峰定义为两侧最近不相等邻居均小于当前值,则为均大于当前值。作者代码通过原地去重后,利用相邻三元素关系(b-a)(b-c)>0快速判断峰/Leetcode官方代码则对每个元素向左右查找第一个不相等邻居进行比较。两种方法均需处理连续相同元素情况,作者代码效率更高(O(n)时间),官方代码逻辑更直观但复杂度略高。视频讲解可在抖音/哔哩哔哩平台观看。

2301_79235379的博客 278

(LeetCode 每日一题) 2210. 统计数组中峰数量 (数组)

【代码】(LeetCode 每日一题) 2210. 统计数组中峰数量 (数组)

记录一些刷过的题并分享学习心得 522

2210. 统计数组中峰数量

统计数组中峰数量。峰定义为元素比左右不相等邻居都大,定义为比左右不相等邻居都小。解题思路分为两步:首先去除相邻重复元素构建新数组,然后遍历新数组中间元素判断是否为峰或。通过比较当前元素与左右邻居的大小关系,利用布尔表达式高效判断。时间复杂度为O(n),空间复杂度为O(1)。最终返回峰的总数。

人生需要动态规划 学习需要贪心算法 398

题目:2210.统计数组中峰数量

leetcode 题目:2210.统计数组中峰数量

2301_76145947的博客 417

【Daily Code】leetcode 2210. 统计数组中峰数量

Problem: 2210. 统计数组中峰数量 Code class Solution { public: int countHillValley(vector<int>& nums) { int cnt = 0; int n = nums.size(); for(int i = 1; i < n - 1; i ++) { // if(nums[i] > nums[i + 1] &amp

2201_76119663的博客 300

力扣2210题题解

用now表示当前趋势(1为上升,-1为下降),prew表示上一轮的趋势。2.

guan__hmc的博客 278
上一篇: 力扣:392. 判断子序列
下一篇: 力扣:459. 重复的子字符串
a_100100
博客等级 码龄5年 12粉丝 · 21原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值