DeepSeek    LeetCode 3753. 范围内总波动值 II Python3实现
这道题的核心是数位DP (Digit DP)直接枚举区间内的每个数字会超时。代码实现可以直接参考 LeetCode 官方题解区或 GitHub 上的高票答案。 问题回顾· 波动值 (Waviness)一个数字中峰严格大于两边和谷严格小于两边的总数。· 规则首尾数字不算少于3位的数字波动值为0。· 目标返回区间 [num1, num2] 内所有数字波动值之和。 核心思路数位DP (Digit DP)利用前缀和思想 f(num) 计算 [0, num] 的总波动值答案即为 f(num2) - f(num1 - 1)。数位DP通过状态压缩避免枚举每个数字核心DP状态通常包含· pos当前处理到第几位。· lastDigit / prevDigit前一位或前两位的数字用于判断峰谷。· lastDir前两位数字的大小关系上升/下降/相等。· tight当前前缀是否和上限 num 的前缀完全一致决定当前位上限。· started是否已经开始填数字用于处理前导零。 Python3 代码实现pythonclass Solution:def totalWaviness(self, num1: int, num2: int) - int:# 辅助函数计算 [0, num] 内所有数字的波动值之和def count_upto(num: int) - int:if num 100: # 少于3位波动值均为0return 0digits list(map(int, str(num)))n len(digits)from functools import lru_cache# 比较两个数字的大小关系用于判断峰谷# 返回: -1 下降, 0 相等, 1 上升def cmp(a: int, b: int) - int:if a b:return 1if a b:return 0return -1lru_cache(None)def dfs(pos: int, prev2: int, prev1: int, started: bool, tight: bool) - (int, int):# 返回: (从当前状态能构造出的数字个数, 这些数字的波动值总和)if pos n:# 如果从未开始即数字0个数为1波动值为0return (1, 0) if started else (0, 0)limit digits[pos] if tight else 9total_count 0total_waviness 0for d in range(0, limit 1):n_started started or d ! 0n_tight tight and (d limit)if not n_started:# 仍然是前导零prev1和prev2无意义用 -1 占位cnt, wav dfs(pos 1, -1, -1, False, n_tight)else:if not started:# 刚结束前导零当前是第一个有效数字无法判断峰谷cnt, wav dfs(pos 1, -1, d, True, n_tight)else:# 已有至少一个有效数字可以尝试判断峰谷add 0# 当 prev2 也存在时即至少有3个有效数字判断 prev1 是否为峰或谷if prev2 ! -1:if (prev2 prev1 d) or (prev2 prev1 d):add 1cnt, wav dfs(pos 1, prev1, d, True, n_tight)wav add * cnt # 当前位判断产生的波动值贡献给所有后续构造出的数字total_count cnttotal_waviness wavreturn (total_count, total_waviness)# 从最高位开始DFS初始时未开始startedFalse处于受限状态tightTruereturn dfs(0, -1, -1, False, True)[1]# 利用前缀和思想计算区间 [num1, num2] 的结果return count_upto(num2) - count_upto(num1 - 1)⏱️ 复杂度分析· 时间复杂度约为 O(log N * 10 * 状态数)其中 N 是 num2。状态数pos, prev1, prev2, started, tight是常数级别因此效率很高。· 空间复杂度O(状态数)用于存储记忆化搜索的缓存。✅ 测试示例pythonsol Solution()print(sol.totalWaviness(120, 130)) # 输出: 3print(sol.totalWaviness(198, 202)) # 输出: 3print(sol.totalWaviness(4848, 4848)) # 输出: 2这段代码通过数位DP高效地统计了所有数字的波动值总和可以处理 num2 高达 10^15 的情况。

相关新闻

DeepSeek    LeetCode 3753. 范围内总波动值 II Java实现

DeepSeek LeetCode 3753. 范围内总波动值 II Java实现

题目理解波动值定义: 峰:数位 严格大于 其两个相邻数位谷:数位 严格小于 其两个相邻数位第一个和最后一个数位不能是峰或谷少于3位的数字,波动值为0示例:4848 中,第二个数位 8 是峰,第三个…

2026/7/28 0:23:51 阅读更多 →
HarmonyOS应用开发实战:猫猫大作战-`replaceUrl` 与 `pushUrl` 的核心区别、无回退栈的设计原则、以及在实际项目中的正确使用方

HarmonyOS应用开发实战:猫猫大作战-`replaceUrl` 与 `pushUrl` 的核心区别、无回退栈的设计原则、以及在实际项目中的正确使用方

前言 在某些场景下,我们不希望用户通过返回键回到之前的页面——例如登录页跳转到主页、启动引导页跳转到首页、游戏结束后重新开始。HarmonyOS 提供了 router.replaceUrl 来替换当前页面,被替换的页面会从页面栈中移除,用户无法通过返回键回…

2026/7/28 0:22:51 阅读更多 →
HarmonyOS应用开发实战:猫猫大作战-在 HarmonyOS 应用中,WindowStage(窗口舞台)是连接 UIAbility 与页面的中间枢纽

HarmonyOS应用开发实战:猫猫大作战-在 HarmonyOS 应用中,WindowStage(窗口舞台)是连接 UIAbility 与页面的中间枢纽

前言 在 HarmonyOS 应用中,WindowStage(窗口舞台)是连接 UIAbility 与页面的中间枢纽——它负责管理应用窗口的创建、显示、隐藏、销毁全周期,并承载 loadContent 加载首屏页面。理解 onWindowStageCreate 回调的完整能力&#x…

2026/7/28 0:22:51 阅读更多 →

最新新闻

阿里网盘几百KB/s卡爆了?这套免费提速方案,解决你的下载焦虑

阿里网盘几百KB/s卡爆了?这套免费提速方案,解决你的下载焦虑

在使用在线云端存储传输文件时,经常会遇到数据接收速率忽高忽低、波动剧烈的情况。有时前一秒还能跑满几兆的速度,下一秒就陡降至几十千字节,这种不稳定的传输体验往往由多方面因素共同决定。 https://www.pandown.orghttps://www.pandown.o…

2026/7/28 0:29:53 阅读更多 →
百度网盘下载太慢怎么办?2026百度网盘加速与解析技巧实测汇总

百度网盘下载太慢怎么办?2026百度网盘加速与解析技巧实测汇总

相信很多人都注意到过这样一个现象:明明使用的是同一根光纤网络,处理同一个文件的获取任务,在下午时往往几分钟就能搞定,可到了晚上,速度却明显变慢,甚至进度条几乎走不动。为什么到了特定时间段&#xff0…

2026/7/28 0:29:53 阅读更多 →
鸣潮自动化工具ok-ww:3步实现游戏智能辅助的后台运行方案

鸣潮自动化工具ok-ww:3步实现游戏智能辅助的后台运行方案

鸣潮自动化工具ok-ww:3步实现游戏智能辅助的后台运行方案 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 在当今快节奏…

2026/7/28 0:29:53 阅读更多 →
Kafka配置SASL_SSL认证传输加密

Kafka配置SASL_SSL认证传输加密

Kafka配置SASL_SSL认证传输加密 在大数据与消息队列领域,Apache Kafka 凭借其高吞吐、低延迟、高可扩展性等特性,成为实时数据流处理的核心组件。然而,随着数据安全与合规性要求日益严格,Kafka 需要同时满足 传输加密(…

2026/7/28 0:29:53 阅读更多 →
上下文压缩 — 设计规范

上下文压缩 — 设计规范

上下文压缩 — 设计规范 概述 为 opencode-goal 插件增加自动和手动的对话压缩功能。 压缩通过 opencode 服务端对对话历史进行摘要实现,在降低 Token 用量的同时保留关键上下文(目标状态、进度)。 已有的 compact_after_tokens 选项将被激活…

2026/7/28 0:29:53 阅读更多 →
使用Unidbg Debugger逆向分析魔改哈希算法:动态调试实战指南

使用Unidbg Debugger逆向分析魔改哈希算法:动态调试实战指南

1. 逆向分析中的“找不同”:为什么Unidbg Debugger是定位魔改哈希算法的利器逆向分析,尤其是针对移动端应用的加密算法分析,很多时候就像一场高难度的“找不同”游戏。你手头可能有一份标准的算法实现,比如SHA-256、MD5&#xff0…

2026/7/28 0:28:53 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻