LeetCode简单题之统计数组中峰和谷的数量

news/2024/11/25 3:54:51/

题目

给你一个下标从 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 。
示例 2:

输入:nums = [6,6,5,5,4,1]
输出:0
解释:
在下标 0 :由于 6 的左侧不存在不相等邻居,所以下标 0 既不是峰也不是谷。
在下标 1 :由于 6 的左侧不存在不相等邻居,所以下标 1 既不是峰也不是谷。
在下标 2 :5 的最近不相等邻居是 6 和 4 。由于 5 < 6 且 5 > 4 ,下标 2 既不是峰也不是谷。
在下标 3 :5 的最近不相等邻居是 6 和 4 。由于 5 < 6 且 5 > 4 ,下标 3 既不是峰也不是谷。
在下标 4 :4 的最近不相等邻居是 5 和 1 。由于 4 < 5 且 4 > 1 ,下标 4 既不是峰也不是谷。
在下标 5 :由于 1 的右侧不存在不相等邻居,所以下标 5 既不是峰也不是谷。
共有 0 个峰和谷,所以返回 0 。

提示:
3 <= nums.length <= 100
1 <= nums[i] <= 100
来源:力扣(LeetCode)

解题思路

  一个最简单的思路就是遍历数组,检查当前元素的左右两边是不是都严格小于当前元素,或者都严格大于当前元素,分别计数。当然这需要删除连续的相同的元素,使之只保留一个。

class Solution:def countHillValley(self, nums: List[int]) -> int:s,i=0,0while True:try:i+=1if nums[i]==nums[i-1]:del nums[i]i-=1except:breakfor i in range(1,len(nums)-1):if nums[i]>nums[i-1] and nums[i]>nums[i+1]:s+=1if nums[i]<nums[i-1] and nums[i]<nums[i+1]:s+=1return s

在这里插入图片描述


http://www.ppmy.cn/news/605335.html

相关文章

软件工程生命周期模型对比分析

软件工程生命周期模型对比分析 2018年3月29日2018年3月28日 由 xyjisaw 本文共1515个字&#xff0c;预计阅读时间需要5分钟。 文章目录迭代-递增生命周期模型 增量模型 进化树模型 编码-修补生命周期模型 瀑布生命周期模型 快速原型开发生命周期模型 开源生命周期模型 同…

LeetCode中等题之最少移动次数使数组元素相等 II

题目 给你一个长度为 n 的整数数组 nums &#xff0c;返回使所有数组元素相等需要的最少移动数。 在一步操作中&#xff0c;你可以使数组中的一个元素加 1 或者减 1 。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;2 解释&#xff1a; 只需要两步操…

数据结构--单链表的定义

数据结构–单链表的定义 本节的学习目标&#xff1a; 单链表的定义&#xff08;如何用代码实现&#xff09; 优点:不要求大片连续空间&#xff0c;改变容量方便 缺点:不可随机存取&#xff0c;要耗费一定空间存放指针 代码实现 struct LNode {ElemType data; //数据域stru…

LeetCode简单题之无法吃午餐的学生数量

题目 学校的自助午餐提供圆形和方形的三明治&#xff0c;分别用数字 0 和 1 表示。所有学生站在一个队列里&#xff0c;每个学生要么喜欢圆形的要么喜欢方形的。 餐厅里三明治的数量与学生的数量相同。所有三明治都放在一个 栈 里&#xff0c;每一轮&#xff1a; 如果队列最前…

LeetCode中等题之寻找右区间

题目 给你一个区间数组 intervals &#xff0c;其中 intervals[i] [starti, endi] &#xff0c;且每个 starti 都 不同 。 区间 i 的 右侧区间 可以记作区间 j &#xff0c;并满足 startj > endi &#xff0c;且 startj 最小化 。 返回一个由每个区间 i 的 右侧区间 的最…

Problem I Rank LED题解 - 2018年第一届GXCPC广西大学生程序设计大赛 正式赛

Problem I Rank LED题解 题目大意 ‘0’到‘9’的数字亮线依次为{6、2、5、5、4、5、6、3、7、6}。 Luras想修改每条光线的位置&#xff0c;使她的新等级尽可能小&#xff0c;同时新等级也是一个不带任何前导零的正整数。 另外&#xff0c;光线总数应与开始时相同。 官方题…

内积和外积的物理意义-数学

内积和外积的物理意义Persistently关注2018.07.31 14:28:46字数 277阅读 6,276向量的内积 abab cos(θ) 向量a和b的长度之积再乘以它们之间的夹角的余弦&#xff1b;向量内积的几何解释就是一个向量在另一个向量上的投影的积&#xff0c;也就是同方向的积特别的。如果一个向量如…

LeetCode简单题之拿硬币

题目 桌上有 n 堆力扣币&#xff0c;每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆&#xff0c;拿走其中的一枚或者两枚&#xff0c;求拿完所有力扣币的最少次数。 示例 1&#xff1a; 输入&#xff1a;[4,2,1] 输出&#xff1a;4 解释&#xff1a;第一堆力扣…