解决leetcode第3753题范围内总波动值II

3753.范围内总波动值II

难度:困难

问题描述:

给你两个整数num1和num2,表示一个闭区间num1,num2

一个数字的波动值定义为该数字中峰和谷的总数:

如果一个数位严格大于其两个相邻数位,则该数位为峰。

如果一个数位严格小于其两个相邻数位,则该数位为谷。

数字的第一个和最后一个数位不能是峰或谷。

任何少于3位的数字,其波动值均为0。

返回范围num1,num2内所有数字的波动值之和。

示例1:

输入:num1=120,num2=130

输出:3

解释:

在范围120,130内:

120:中间数位2是峰,波动值=1。

121:中间数位2是峰,波动值=1。

130:中间数位3是峰,波动值=1。

范围内所有其他数字的波动值均为0。

因此,总波动值为1+1+1=3。

示例2:

输入:num1=198,num2=202

输出:3

解释:

在范围198,202内:

198:中间数位9是峰,波动值=1。

201:中间数位0是谷,波动值=1。

202:中间数位0是谷,波动值=1。

范围内所有其他数字的波动值均为0。

因此,总波动值为1+1+1=3。

示例3:

输入:num1=4848,num2=4848

输出:2

解释:

数字4848:第二个数位8是峰,第三个数位4是谷,波动值为2。

提示:

1<=num1<=num2<=1015

问题分析:

解决本问题,设计函数get_peaks_and_valleys_in_num(n),其功能是从一个数字n中找出出现的峰和谷的总数并返回,在主程序中遍历从num1到num2的所有数字,并将出现的峰和谷的数量累加求和,最后得到num1,num2内所有数字的波动值之和。

程序如下:

python 复制代码
#统计一个数字n中有多少个峰和谷,返回统计的结果
def get_peaks_and_valleys_in_num(n):
    s=str(n)
    n=len(s)
    if n<3:
        return 0
    else:
        c=0
        for i in range(1,n-1):
            if (s[i]>s[i-1] and s[i]>s[i+1]) or (s[i]<s[i-1] and s[i]<s[i+1]):
                c=c+1
        return c

#主程序
num1=int(input('pls input num1='))
num2=int(input('pls input num2='))
t=0
for i in range(num1,num2+1):
    t=t+get_peaks_and_valleys_in_num(i)
print(f'[{num1},{num2}]内所有数字的波动值之和为{t}')

运行实例一

pls input num1=120

pls input num2=200

120,200内所有数字的波动值之和为44

运行实例二

pls input num1=42315

pls input num2=42316

42315,42316内所有数字的波动值之和为6

运行实例三

pls input num1=23

pls input num2=30

23,30内所有数字的波动值之和为0

相关推荐
倒头就睡的小比特16 小时前
算法竞赛C++常用的STL
c++·算法
默_笙16 小时前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
小羊没烦恼!16 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
qq_4260039616 小时前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫16 小时前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技17 小时前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读17 小时前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
猎头南楼17 小时前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
只睡四小时18 小时前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas
旖旎夜光18 小时前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控