3751. 范围内总波动值 I
题目描述
给你两个整数 num1 和 num2,表示闭区间 [num1, num2]。
波动值:一个数字中「峰」和「谷」的总数。
- 峰:某数位严格大于左右相邻数位
- 谷:某数位严格小于左右相邻数位
- 首尾数位不参与判断,位数 < 3 的数字波动值为 0
返回区间内所有数字的波动值之和。
思路:枚举
枚举每个数字,先转化为字符串,然后遍历每个数位,判断是否为峰或谷,如果是则计数加1,最后返回计数之和。
- 时间复杂度:O(n * m):其中
是区间长度, 是数字的位数 - 空间复杂度:O(m):其中
是数字的位数
代码
class Solution:
def totalWaviness(self, num1: int, num2: int) -> int:
def waviness(num:int)->int:
s = str(num)
return sum((a < b > c) or (a > b < c)
for a,b,c in zip(s,s[1:],s[2:]))
return sum(waviness(n) for n in range(num1,num2+1))