Kimi    LeetCode 3906. 统计网格路径中好整数的数目 Rust实现
以下是 LeetCode 3906 的 Rust 实现采用数位 DP 思路核心是将路径上访问的 7 个格子标记为关键位然后对 [0, x] 范围内的数进行记忆化搜索。rustimpl Solution {pub fn count_good_integers_on_path(l: i64, r: i64, directions: String) - i64 {// 标记路径上访问的 7 个关键格子行优先顺序pos row * 4 collet mut key [false; 16];let (mut row, mut col) (0, 0);key[0] true; // 起点 (0,0)for c in directions.chars() {if c D {row 1;} else {col 1;}key[row * 4 col] true;}// 数位 DP计算 [0, x] 中满足条件的数的个数let mut calc |x: i64| - i64 {if x 0 {return 0;}// 将 x 补齐为 16 位字符串let s format!({:016}, x);let s_bytes s.as_bytes();// 记忆化数组 f[pos][last]-1 表示未计算let mut f [[-1i64; 10]; 16];fn dfs(pos: usize,last: usize,lim: bool,key: [bool; 16],s_bytes: [u8],f: mut [[i64; 10]; 16],) - i64 {if pos 16 {return 1;}// 非受限状态且已计算过直接返回if !lim f[pos][last] ! -1 {return f[pos][last];}let mut res 0i64;// 当前位的下界如果是关键位必须 last否则可以从 0 开始let start if key[pos] { last } else { 0 };// 当前位的上界如果受限则为 s[pos]否则为 9let end if lim {(s_bytes[pos] - b0) as usize} else {9};for i in start..end {let next_last if key[pos] { i } else { last };let next_lim lim (i end);res dfs(pos 1, next_last, next_lim, key, s_bytes, f);}// 只有非受限状态才缓存结果if !lim {f[pos][last] res;}res}dfs(0, 0, true, key, s_bytes, mut f)};calc(r) - calc(l - 1)}}关键思路说明1. 路径预处理directions 恰好包含 3 个 D 和 3 个 R从 (0,0) 出发走 6 步到达 (3,3)。将路径上经过的 7 个格子在 16 位字符串中的位置row * 4 col标记为 key[pos] true。2. 数位 DP将数字补齐为 16 位后逐位枚举。对于每个位置 pos- 如果 key[pos] true路径上的格子当前位必须 ≥ 上一个路径格子的值last同时更新 last。- 如果 key[pos] false非路径上的格子可以填任意数字 0~9last 保持不变。3. 受限状态 lim表示当前位是否被上界 s[pos] 限制。如果受限当前位最大只能填 s[pos]否则可以填到 9。只有非受限状态的结果可以缓存。4. 区间转换通过 calc(r) - calc(l - 1) 得到 [l, r] 范围内的答案。时间复杂度 O(16 \times 10 \times 10)空间复杂度 O(16 \times 10)完全在可接受范围内。

相关新闻

AI 应用缓存设计:上下文、结果与一致性

AI 应用缓存设计:上下文、结果与一致性

一个常见场景是这样的:你做了一个企业知识库问答应用。用户每问一次,服务端都要读取会话历史、拼 prompt、查向量库、调用模型、做引用校验,再把答案和来源写回数据库。功能上线后,接口耗时明显变长,Redis CPU 看起来还…

2026/10/18 3:49:07 阅读更多 →
LangGraph 基础入门2(小白必看)

LangGraph 基础入门2(小白必看)

LangGraph 控制流与节点执行:顺序、分支、循环、容错一篇梳理清楚 上一篇整理了 LangGraph 的基础:State、Node、Edge、Reducer 和 MessagesState。这一篇继续往下走,重点看 LangGraph 里最关键的能力:控制流。 所谓控制流&#x…

2026/10/17 16:57:51 阅读更多 →
三面追问:百万行代码库怎么跑好Claude Code?harness五层才是关键

三面追问:百万行代码库怎么跑好Claude Code?harness五层才是关键

前言 三面被问"百万行代码里怎么跑好 Claude Code"是一种什么体验?面试现场一愣,平时在几万行模块里跑得顺风顺水,可巨型 monorepo 这一关确实没实操过。回来翻官方博客补课,发现小项目用户最容易漏掉的,是…

2026/10/18 3:50:05 阅读更多 →

最新新闻

24GB显存跑32B开源大模型:量化+动态卸载的春节实验

24GB显存跑32B开源大模型:量化+动态卸载的春节实验

春节我给自己找了一件挺拧巴的事:非要把一个32B参数的开源大模型,塞进家用那台只有24GB显存的消费级显卡里。拧巴的不是技术难度,而是时机——走亲访友最忙的那几天,客厅里主机风扇一响,整个年味就碎了一地。所以这场实…

2026/10/18 19:44:30 阅读更多 →
心电算法实战:Python滤波、R波识别与心率计算全链路解析

心电算法实战:Python滤波、R波识别与心率计算全链路解析

简介:这是一份以Python编写的心电信号处理算法合集,围绕滤波、R波识别、心率计算、特征提取、心律失常分类,以及房颤、室颤室速等异常心律识别构建,同时覆盖伪差干扰研究、可视化展示与测试工程,适合生物医学工程专业学…

2026/10/18 19:44:30 阅读更多 →
假期AI圈动态全解析:模型迭代、工具链与工程落地

假期AI圈动态全解析:模型迭代、工具链与工程落地

七天假期结束,把手机里这段时间攒下的AI圈消息重新捋了一遍,说实话比上班还累。人在景区排队,群里在刷权重更新;晚上躺床上刷手机,新框架的讨论又顶上热搜。这七天给我的感觉就是:AI圈真的没一天消停&#…

2026/10/18 19:44:30 阅读更多 →
Fetch MCP服务:让大模型拥有实时网页抓取能力

Fetch MCP服务:让大模型拥有实时网页抓取能力

最近帮一位朋友调试他的AI助手项目,聊到一个很现实的问题:模型明明很强,却答不上来昨天刚发布的技术文档。原因很简单,模型的知识有截止日期,而它自己又不会主动去翻网页。要解决这个问题,就得给模型接上一…

2026/10/18 19:44:30 阅读更多 →
vdw-Prks水合物模型:甲烷水合物相平衡高精度计算原理与实现

vdw-Prks水合物模型:甲烷水合物相平衡高精度计算原理与实现

简介:本资源是一份面向计算化学、能源材料与相平衡研究方向的科研人员及高年级本科生的MATLAB建模仿真工具,聚焦甲烷水合物在低温高压条件下的相平衡预测问题。它基于经典的van der Waals–Platteeuw(vdw-P)理论框架,并…

2026/10/18 19:44:30 阅读更多 →
GitHub 开源趋势日报 | 2026年10月8日:AI Agent 与 TypeScript 项目实战配置指南

GitHub 开源趋势日报 | 2026年10月8日:AI Agent 与 TypeScript 项目实战配置指南

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

2026/10/18 19:43:30 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →