DeepSeek    LeetCode 3753. 范围内总波动值 II Java实现
题目理解波动值定义· 峰数位 严格大于 其两个相邻数位· 谷数位 严格小于 其两个相邻数位· 第一个和最后一个数位不能是峰或谷· 少于3位的数字波动值为0示例4848 中第二个数位 8 是峰第三个数位 4 是谷波动值 2。---核心思路前缀和 数位DP直接枚举区间每个数字会超时num 最大可达 10^15。核心技巧定义 f(n) [0, n] 范围内所有数字的波动值之和则区间 [num1, num2] 的答案 f(num2) - f(num1 - 1)这样只需实现计算 [0, n] 波动值之和的函数。---Java 实现数位DP 记忆化搜索javaclass Solution {private int[] digits;// dp[pos][pre2][pre][cnt][limit]// pre2/pre: 10 表示无前一位处理前导零private Long[][][][][] memo;public long totalWaviness(long num1, long num2) {return countUpTo(num2) - countUpTo(num1 - 1);}private long countUpTo(long n) {if (n 100) return 0; // 少于3位波动值均为0String s String.valueOf(n);digits new int[s.length()];for (int i 0; i s.length(); i) {digits[i] s.charAt(i) - 0;}// 维度: pos, pre2(0-10), pre(0-10), cnt(0-20), limit(0/1)memo new Long[digits.length][11][11][20][2];return dfs(0, 10, 10, 0, true, true);}/*** param pos 当前处理到的位置* param pre2 前两位的数字10表示不存在* param pre 前一位的数字10表示不存在* param cnt 已经累计的波动值* param limit 是否受上界 n 的限制* param lead 是否仍处于前导零状态*/private long dfs(int pos, int pre2, int pre, int cnt, boolean limit, boolean lead) {if (pos digits.length) {return cnt;}if (!limit memo[pos][pre2][pre][cnt][lead ? 1 : 0] ! null) {return memo[pos][pre2][pre][cnt][lead ? 1 : 0];}int maxDigit limit ? digits[pos] : 9;long res 0;for (int d 0; d maxDigit; d) {boolean newLimit limit (d maxDigit);boolean newLead lead (d 0);int newCnt cnt;// 只有当前不是前导零且前面已经有两个有效数字时才判断 pre 是否为峰/谷if (!newLead pre2 ! 10 pre ! 10) {if ((pre pre2 pre d) || (pre pre2 pre d)) {newCnt;}}int newPre2 newLead ? 10 : pre;int newPre newLead ? 10 : d;res dfs(pos 1, newPre2, newPre, newCnt, newLimit, newLead);}if (!limit) {memo[pos][pre2][pre][cnt][lead ? 1 : 0] res;}return res;}}---代码详解1. 状态设计· pre2前两位数字用于判断 pre 是否为峰/谷· pre前一位数字· 用 10 表示不存在因为数字范围是 0-92. 前导零处理· lead true 时当前及之前所有位都是前导零数字还未真正开始· 前导零不参与波动值计算3. 判断峰/谷当 pre2、pre、d 三个连续数位都存在时javaif ((pre pre2 pre d) || (pre pre2 pre d)) {newCnt;}4. 记忆化条件只有 !limit 时才能缓存因为 limittrue 时可选数字范围因 n 而异。---复杂度分析· 时间复杂度O(len * 11 * 11 * 20 * 2 * 10) ≈ O(len * 24200)len ≤ 16常数级· 空间复杂度O(len * 11 * 11 * 20 * 2)

相关新闻

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

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

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

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

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

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

2026/11/9 1:32:03 阅读更多 →
Applera1n:iOS 15-16.6激活锁绕过终极解决方案深度解析

Applera1n:iOS 15-16.6激活锁绕过终极解决方案深度解析

Applera1n:iOS 15-16.6激活锁绕过终极解决方案深度解析 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 在iOS设备安全领域,激活锁(Activation Lock)一直…

2026/11/4 16:39:12 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/12 5:00:00 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/12 5:13:20 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/12 5:13:20 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/12 5:13:20 阅读更多 →

日新闻

周新闻

月新闻