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

发布时间:2026/9/14 22:57:55

DeepSeek    LeetCode 3753. 范围内总波动值 II JavaScript实现 对于 LeetCode 3753 这道困难题核心解法是数位 DP配合前缀和技巧F(num2) - F(num1-1)。以下是基于该思路的 JavaScript 实现。javascript/*** param {number} num1* param {number} num2* return {number}*/var totalWaviness function(num1, num2) {const countUpTo (x) {if (x 100) return 0; // 少于3位数波动值为0const digits String(x).split().map(Number);const n digits.length;// 记忆化缓存key编码为字符串const memo new Map();// pos: 当前处理位置, prev2: 前两位数字(-1表示不存在), prev1: 前一位数字(-1表示不存在), tight: 是否受到上界限制, started: 是否已经开始构造有效数字const dfs (pos, prev2, prev1, tight, started) {if (pos n) {return { count: 1, sum: 0 };}const key ${pos},${prev2},${prev1},${tight},${started};if (memo.has(key)) return memo.get(key);const limit tight ? digits[pos] : 9;let totalCount 0;let totalSum 0;for (let d 0; d limit; d) {const nextTight tight (d limit);const nextStarted started || d ! 0;// 仍然是前导零的情况数字还未开始if (!nextStarted) {const res dfs(pos 1, -1, -1, nextTight, false);totalCount res.count;totalSum res.sum;continue;}// 构造当前数字的三元组prev2, prev1, dlet add 0;if (started prev2 ! -1 prev1 ! -1) {// 判断 prev1 是否为峰或谷if ((prev1 prev2 prev1 d) || (prev1 prev2 prev1 d)) {add 1;}}const nextPrev2 prev1;const nextPrev1 d;const res dfs(pos 1, nextPrev2, nextPrev1, nextTight, true);totalCount res.count;// 当前位对总和的贡献如果当前构成波动则后续每一种补全方式都贡献1totalSum res.sum add * res.count;}const result { count: totalCount, sum: totalSum };memo.set(key, result);return result;};// 返回 [0, x] 的总波动值return dfs(0, -1, -1, true, false).sum;};// 前缀和思想区间和 F(num2) - F(num1-1)return countUpTo(num2) - countUpTo(num1 - 1);};核心思路1. 数位 DP 容斥分别计算 [0, num2] 和 [0, num1-1] 的总波动值相减得到区间 [num1, num2] 的结果。2. 状态设计判断一个数字是否为峰/谷需要知道它的前两位数字 prev2 和 prev1因此将它们作为 DFS 的状态参数。此外还需· tight是否紧贴上界用于控制枚举上限。· started是否已经开始构造有效数字用于处理前导零。3. 贡献累加在 DFS 过程中每当我们确定一位数字 d 并发现它与 prev2、prev1 构成峰/谷时不仅累加自身的 1还要累加当前波动值 * 后续所有可能的补全方式数量从而一次性统计所有合法数字的贡献。复杂度· 时间复杂度O(log N * 10^2 * 2 * 2 * 10)即 O(400 * log N)其中 N 是 num2 的值。· 空间复杂度O(log N * 400)用于记忆化缓存。
延伸阅读

更多相关文章

2026/9/14 22:57:11

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

这道题的核心是数位DP (Digit DP),直接枚举区间内的每个数字会超时。代码实现可以直接参考 LeetCode 官方题解区或 GitHub 上的高票答案。📝 问题回顾 波动值 (Waviness):一个数字中峰(严格大于两边)和谷(严…

2026/9/14 2:21:30

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

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

2026/9/7 10:27:22

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

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

2026/9/14 22:56:04

AR远程协助可视化技术解析与应用实践

1. AR远程协助中的可视化价值解析在工业维修、医疗手术指导、设备操作培训等专业领域,AR远程协助系统正逐步取代传统的语音通话和二维视频支持。这套系统的核心突破点在于:通过虚实融合的可视化界面,将专家视角的操作指令直接叠加在真实场景中…

2026/9/14 22:56:04

Neo级轻薄本:手机SoC重构PC使用逻辑的技术解析

1. 为什么“Neo级轻薄本”突然火了?——不是参数升级,而是使用逻辑的彻底重写最近在数码圈里,“Neo级轻薄本”这个说法高频出现,但翻遍所有厂商官网、产品页、发布会PPT,你都找不到这个官方命名。它既不是Intel的Evo认…

2026/9/14 22:56:04

工业串口服务器选型的12项隐性指标解析

1. 为什么“串口服务器”不再是插上线就能用的傻瓜设备——从NCOM622样本看工业现场的真实选型逻辑你手头那台刚拆封的32路串口服务器,通电后LED灯亮了,串口能ping通IP,Modbus Poll也能连上从站——恭喜,你完成了出厂验收的前30秒…

2026/9/14 22:51:04

Zoho Projects问题解决通知自动化方案与实践

1. 项目背景与核心需求解析在项目管理场景中,问题跟踪与解决闭环是保证交付质量的关键环节。我们经常遇到这样的痛点:开发团队在内部系统中标记了问题状态为"已解决",但外部用户(如客户、合作伙伴)却无法及时…

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码