发布时间:2026/7/28 0:24:01
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)

相关新闻

2026/7/28 0:24:01

文献综述的撰写逻辑与学术应用价值梳理

本科毕业论文是大学四年最大的坎。开题报告憋一周写不出三页,找文献翻遍十几个网站还是缺关键资料,写正文卡壳半天憋不出一句话,降重改到凌晨三点结果逻辑全乱,答辩前一天PPT还没做完。别慌,亲测这四个工具能让你少熬半…

2026/7/28 0:24:01

智能降重实用技巧分享 高效实现内容原创度提升的靠谱方法指南

本科毕业论文是大学四年最大的坎。开题报告憋一周写不出三页,找文献翻遍十几个网站还是缺关键资料,写正文卡壳半天憋不出一句话,降重改到凌晨三点结果逻辑全乱,答辩前一天PPT还没做完。别慌,亲测这四个工具能让你少熬半…

2026/7/28 0:13:37

信息系统管理工程师-IT 治理基础与 IT 治理体系详解

一、引言IT 治理是软考中级信息系统管理工程师 “信息系统治理” 章节的核心内容,属于组织层面的顶层设计范畴,为后续 IT 服务管理、系统开发、运维管理等内容提供制度框架,在考试中选择题和案例分析均有涉及,占比约 5-8 分&#…

2026/7/28 4:59:22

Flutter插件在OpenHarmony平台的适配实践

1. 项目背景与核心挑战Flutter作为跨平台开发框架,在移动端开发领域已经相当成熟。而OpenHarmony作为新兴的操作系统平台,其生态建设正处于快速发展阶段。将Flutter生态中的优秀三方库适配到OpenHarmony平台,对于丰富OpenHarmony应用开发生态…

2026/7/28 4:59:22

永恒之塔2卡顿崩溃解决方案:13/14代CPU着色器编译优化指南

最近《永恒之塔2》更新后,不少玩家遇到了一个令人头疼的问题:游戏启动后卡在logo界面、加载界面无限转圈,特别是使用13/14代Intel CPU的玩家还遭遇了着色器编译导致的崩溃闪退。作为一名同样经历过这些问题的技术玩家,我通过多轮实测找到了切实可行的解决方案。 这篇文章不…

2026/7/28 4:59:22

图形化编程入门:用Mind+和Python海龟绘图实现智能星空绘制

1. 项目概述:从“智能绘星”开启图形化编程之旅如果你是一位对编程充满好奇,但又对满屏的英文代码感到望而生畏的初学者,或者是一位希望引导孩子进入计算思维世界的家长、老师,那么“智能绘星”这个项目就是你梦寐以求的完美起点。…

2026/7/28 4:54:22

魔兽争霸III终极兼容性指南:5分钟让经典游戏重获新生

魔兽争霸III终极兼容性指南:5分钟让经典游戏重获新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还记得那些年在网吧里通宵玩魔兽争霸…

2026/7/27 9:04:58

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

2026/7/28 0:03:34

学术论文研究创新点梳理与核心价值提炼指南

本科毕业论文是大学四年最大的坎。开题报告憋一周写不出三页,找文献翻遍十几个网站还是缺关键资料,写正文卡壳半天憋不出一句话,降重改到凌晨三点结果逻辑全乱,答辩前一天PPT还没做完。别慌,亲测这四个工具能让你少熬半…

2026/7/28 0:03:34

开发商售楼处数字化升级怎么做?

房企的数字化转型投入正在快速增长,据行业数据显示,2025年房企数字化投入规模已突破800亿元,年复合增长率达35%。售楼处的数字化升级不是单一环节的改造,而是从“获客-展示-成交-服务”全链路的系统升级。数字化升级四步法第一步&…

2026/7/28 0:03:34

模型不再值钱之后,AI 编程工具在争什么

2026 年 7 月,AI 编程工具赛道发生了一个标志性转折:模型本身不再值钱了。当 Kimi K3 开源模型在编程基准上击败 GPT 和 Claude,当 GitHub Copilot 第一次把开源模型纳入选择器,当 OpenAI 把 Codex 并入 ChatGPT 做成三合一超级应…

2026/7/28 4:38:09

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…