Kimi    LeetCode 3704. 统计和为 N 的无零数对 Java实现
以下是 LeetCode 3704「统计和为 N 的无零数对」的 Java 实现。思路数位 DP由于 n 最大可达 10^15枚举所有数对会超时需要用 数位 DP 来解决。核心思想是从 最低位到最高位 逐位处理 n 的十进制表示状态定义为- dp[carry][aliveA][aliveB]处理到当前位时低位进位为 carrya 和 b 是否还在更高位有有效数字aliveA/aliveB。转移时枚举当前位 da 和 db- 如果 aliveX 1当前位可以取 1~9无零或在非最低位时取 0表示该数到此结束。- 如果 aliveX 0当前位只能取 0前导零不属于十进制表示。需要满足 (da db carry) % 10 n 的当前位。最后给 n 补一位 0 来吸收最终进位答案为 dp[0][0][0]。时间复杂度 O(L × 9²)空间复杂度 O(1)其中 L 为 n 的位数。javaclass Solution {public long countNoZeroPairs(long n) {char[] cs Long.toString(n).toCharArray();int m cs.length;// digits[i] 表示 n 的第 i 位从低位到高位0-basedint[] digits new int[m 1];for (int i 0; i m; i) {digits[i] cs[m - 1 - i] - 0;}digits[m] 0; // 额外补一位最高位 0吸收最终进位// dp[carry][aliveA][aliveB]long[][][] dp new long[2][2][2];dp[0][1][1] 1; // 初始状态无进位a 和 b 都还在存活for (int pos 0; pos m 1; pos) {long[][][] ndp new long[2][2][2];int target digits[pos];for (int carry 0; carry 1; carry) {for (int aliveA 0; aliveA 1; aliveA) {for (int aliveB 0; aliveB 1; aliveB) {long ways dp[carry][aliveA][aliveB];if (ways 0) {continue;}// 构造 a 当前位可选的数字及对应的 aliveA 下一状态int[] aDigits;int[] aNext;if (aliveA 1) {if (pos 0) {// 最低位必须是非零数字1~9因为 a 是正整数aDigits new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9};aNext new int[] {1, 1, 1, 1, 1, 1, 1, 1, 1};} else {// 非最低位可以选 1~9继续存活或选 0在此结束aDigits new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};aNext new int[] {1, 1, 1, 1, 1, 1, 1, 1, 1, 0};}} else {// a 已经结束当前位只能是 0aDigits new int[] {0};aNext new int[] {0};}// 构造 b 当前位可选的数字及对应的 aliveB 下一状态int[] bDigits;int[] bNext;if (aliveB 1) {if (pos 0) {bDigits new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9};bNext new int[] {1, 1, 1, 1, 1, 1, 1, 1, 1};} else {bDigits new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};bNext new int[] {1, 1, 1, 1, 1, 1, 1, 1, 1, 0};}} else {bDigits new int[] {0};bNext new int[] {0};}for (int ai 0; ai aDigits.length; ai) {int da aDigits[ai];int na aNext[ai];for (int bi 0; bi bDigits.length; bi) {int db bDigits[bi];int nb bNext[bi];int s da db carry;if (s % 10 ! target) {continue;}int ncarry s / 10;ndp[ncarry][na][nb] ways;}}}}}dp ndp;}// 最终要求无剩余进位a 和 b 都已经结束return dp[0][0][0];}}关键点说明1. 从低位到高位处理因为加法进位是从低位向高位传递的。2. alive 状态表示该数在更高位是否还有有效数字。alive 0 意味着该数已经结束更高位只能填 0前导零不计入十进制表示。3. 最低位特殊处理pos 0 时a 和 b 的最低位不能取 0因为它们是正整数最低位必须是 1~9。4. 额外补位digits[m] 0 用于处理最高位可能产生的进位确保所有状态正确收敛。

相关新闻

ChatGPT定时任务功能详解:从配置到实战的自动化指南

ChatGPT定时任务功能详解:从配置到实战的自动化指南

这次我们来看 ChatGPT 工作区新增的定时任务功能。这个功能让 ChatGPT 不再只是即时对话工具,而是能够按计划自动执行任务的智能助手。对于需要定期生成报告、自动检查数据、定时发送消息的用户来说,这直接解决了"重复劳动"的痛点。从核心能力…

2026/10/9 10:12:02 阅读更多 →
告别导出繁琐!AI 导出鸭一站式讲解怎样把 Claude 表格导出技巧

告别导出繁琐!AI 导出鸭一站式讲解怎样把 Claude 表格导出技巧

AI导出鸭实操教程:怎样把Claude表格导出高效落地全流程告别导出繁琐!AI导出鸭一站式讲解怎样把Claude表格导出技巧多终端工具测评|AI导出鸭手把手教你怎样把Claude表格导出无格式错乱 引言 日常使用Claude整理项目数据、统计台账、调研表格时…

2026/9/29 7:24:35 阅读更多 →
大语言模型多轮对话优化的关键技术方案

大语言模型多轮对话优化的关键技术方案

1. 项目背景与核心挑战在大语言模型(LLM)的实际应用中,多轮对话质量直接决定了用户体验。我在多个对话系统项目中反复验证过一个现象:单轮回答出色的模型,在连续对话中常出现上下文断裂、指代混乱和记忆丢失三大典型问…

2026/10/8 0:07:10 阅读更多 →

最新新闻

Linux安装Oracle19C全攻略:前置检查、静默安装与高频报错排查

Linux安装Oracle19C全攻略:前置检查、静默安装与高频报错排查

简介:对Linux运维工程师和Oracle DBA而言,在CentOS 7与Red Hat 7中安装Oracle 19C,需要提前完成硬件检查、安全策略调整、网络和用户配置等一系列系统级准备,否则安装过程很容易中断。完整安装指南以docx格式提供,共1个…

2026/10/13 12:23:19 阅读更多 →
计算机网络基础实操指南:从命令行到抓包故障排查

计算机网络基础实操指南:从命令行到抓包故障排查

计算机网络基础这门课,我见过太多人是“看书全会、上手全废”的状态。OSI七层模型背得出来,TCP三次握手画得出来,可真到了电脑前面,一条命令敲下去没反应,人就懵了;抓包工具打开,满屏花花绿绿的…

2026/10/13 12:23:19 阅读更多 →
Windows组件服务COM+深度解析:事务、对象池与故障排查

Windows组件服务COM+深度解析:事务、对象池与故障排查

简介:这是一份面向COM组件开发者的编程学习资料包,系统整理了COM服务模型的核心知识点,涵盖组件注册、事务处理、安全控制、事件路由、对象激活策略及DCOM分布式计算等内容,适合需要构建企业级分布式应用的中高级Windows程序员。包…

2026/10/13 12:23:18 阅读更多 →
Mathesar 表管理实战指南:PostgreSQL 数据表的创建、维护与表级权限控制

Mathesar 表管理实战指南:PostgreSQL 数据表的创建、维护与表级权限控制

数据库后端前端协作 【免费下载链接】mathesar An intuitive spreadsheet-like interface that lets users of all technical skill levels view, edit, query, and collaborate on Postgres data directly. 100% open source and self hosted, with native Postgres access co…

2026/10/13 12:23:18 阅读更多 →
HashMap底层原理:从数据结构到扩容机制全解析

HashMap底层原理:从数据结构到扩容机制全解析

“你先说说HashMap的底层原理吧。” 这个问题我既被问过,也拿来问过别人。十个候选人里,能在一分钟内说出“数组加链表”的大概有七八个,能接着讲出红黑树、扩容、哈希扰动的,可能只有两三个。真正能把设计动机、版本差异、并发问…

2026/10/13 12:23:18 阅读更多 →
关系模型实战指南:从二维表到业务稳定性的底层逻辑

关系模型实战指南:从二维表到业务稳定性的底层逻辑

1. 这不是教科书里的“关系”,而是你每天都在用的数据组织逻辑“关系模型的基本概念”——看到这八个字,很多人第一反应是大学数据库课上那个被粉笔灰笼罩的下午,黑板上写着“实体、属性、域、键”,讲台下有人偷偷刷手机&#xff…

2026/10/13 12:22:17 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →