Kimi    LeetCode 3621. 位计数深度为 K 的整数数目 I Rust实现
LeetCode 3621. 位计数深度为 K 的整数数目 I Rust 实现rustimpl Solution {pub fn popcount_depth(n: i64, k: i32) - i64 {// k0只有 1 的深度为 0if k 0 {return if n 1 { 1 } else { 0 };}// 计算一个整数的 popcountfn pc(mut x: i32) - i32 {let mut cnt 0;while x 0 {cnt x 1;x 1;}cnt}// 预处理 1~60 的 popcount-depthlet mut depth vec![-1; 65];depth[1] 0;fn get_depth(x: i32, depth: mut Veci32) - i32 {if x 1 {return 0;}if depth[x as usize] ! -1 {return depth[x as usize];}let d 1 get_depth(pc(x), depth);depth[x as usize] d;d}// 找出所有满足 depth(c) k-1 的 popcount 值 clet mut targets vec![];for i in 1..60 {if get_depth(i, mut depth) k - 1 {targets.push(i);}}if targets.is_empty() {return 0;}// n 的二进制表示按位存储let bits: Vecu8 format!({:b}, n).bytes().map(|b| b - b0).collect();let m bits.len();let mut ans 0i64;for c in targets {// memo[pos][ones]仅非 tight 状态有效-1 表示未计算let mut memo vec![vec![-1i64; (c 1) as usize]; m];fn dfs(pos: usize,ones: i32,tight: bool,bits: Vecu8,c: i32,memo: mut VecVeci64,) - i64 {if ones c {return 0; // 1 的个数已超剪枝}if pos bits.len() {return if ones c { 1 } else { 0 };}if !tight memo[pos][ones as usize] ! -1 {return memo[pos][ones as usize];}let limit if tight { bits[pos] } else { 1 };let mut res 0i64;for d in 0..limit {res dfs(pos 1,ones d as i32,tight (d limit),bits,c,memo,);}if !tight {memo[pos][ones as usize] res;}res}ans dfs(0, 0, true, bits, c, mut memo);}// k1 的特殊处理popcount1 包含 x1但 depth(1)0需排除if k 1 {ans - 1;}ans}}---Rust 实现要点要点 说明format!({:b}, n) 将 n 转为二进制字符串再拆分为 Vecu8 逐位处理内部递归函数 dfs 作为独立函数接收所有必要参数闭包递归在 Rust 中较繁琐记忆化数组 memo[pos][ones] 用 -1 标记未计算仅 tight false 时写入复用i64 返回值 n ≤ 10¹⁵答案在 i64 范围内pc 用 i32 即可x ≤ 60k1 修正 c 1 时会把 x 1 算入但其深度为 0需减去时间复杂度 O(log² n)空间复杂度 O(log² n)

相关新闻

AI 电动窗帘电机智能功率 覆盖 H 桥电机驱动、电源管理、传感器控制的完整选型方案

AI 电动窗帘电机智能功率 覆盖 H 桥电机驱动、电源管理、传感器控制的完整选型方案

2026年,AI 技术全面融入智能家居,电动窗帘电机向静音化、高效率、长续航、高集成度发展。微碧半导体(VBsemi)基于先进的 Trench 工艺,为您提供覆盖 H 桥电机驱动、电源管理、传感器控制的全套 AI 电动窗帘功率解决方案…

2026/10/28 6:55:01 阅读更多 →
Kimi    LeetCode 3621. 位计数深度为 K 的整数数目 I JavaScript实现

Kimi LeetCode 3621. 位计数深度为 K 的整数数目 I JavaScript实现

LeetCode 3621. 位计数深度为 K 的整数数目 I JavaScript 实现javascript /*** param {number} n* param {number} k* return {number}*/ var popcountDepth function(n, k) {// k0:只有 1 的深度为 0if (k 0) {return n > 1 ? 1 : 0;}// 计算一个整数的 popc…

2026/11/12 7:57:45 阅读更多 →
AI 电动窗帘电机智能功率 精准控制 完整选型方案

AI 电动窗帘电机智能功率 精准控制 完整选型方案

随着 AI 技术在智能家居中的普及,电动窗帘电机正朝着静音化、精准控制、低功耗与高集成度发展。微碧半导体(VBsemi)基于先进的 Trench 工艺,为您提供覆盖电机驱动、电源管理、智能控制的全套 MOSFET 解决方案,满足 AI …

2026/11/9 8:29:55 阅读更多 →

最新新闻

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 阅读更多 →

日新闻

周新闻

月新闻