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/7/19 0:49:03 阅读更多 →
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/7/19 0:49:03 阅读更多 →
AI 电动窗帘电机智能功率 精准控制 完整选型方案

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

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

2026/7/19 0:49:03 阅读更多 →

最新新闻

直播礼物 SVGA 总闪屏、串回调?uni-app 原生播放组件实战

直播礼物 SVGA 总闪屏、串回调?uni-app 原生播放组件实战

做直播礼物、入场特效、会员开通或活动奖励时,SVGA 往往不是“能播放就行”。真正麻烦的是连续礼物到来后画面闪一下、旧动画的回调跑到新动画上、资源还没加载完就被下一条覆盖;接完原生 SDK 后,又发现普通调试基座根本没有对应依赖。如果项…

2026/7/19 2:12:34 阅读更多 →
Mac Mouse Fix终极指南:如何用10美元鼠标在macOS上超越苹果触控板体验

Mac Mouse Fix终极指南:如何用10美元鼠标在macOS上超越苹果触控板体验

Mac Mouse Fix终极指南:如何用10美元鼠标在macOS上超越苹果触控板体验 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix Mac Mouse Fi…

2026/7/19 2:12:34 阅读更多 →
AI工具解除限制与平台聚合风险解析

AI工具解除限制与平台聚合风险解析

最近在几个技术社群里,看到不少人在讨论“解除限制”的 AI 工具,尤其是围绕一些新版本模型。很多新手朋友一看到“免费”“无脑入手”“无限使用”这样的字眼就特别兴奋,恨不得马上安装体验。但作为一个折腾过不少开源模型和工具的人&#xf…

2026/7/19 2:12:34 阅读更多 →
Vue3双向绑定原理与defineModel()实战指南

Vue3双向绑定原理与defineModel()实战指南

1. Vue双向绑定机制解析双向数据绑定是Vue框架最核心的特性之一,它实现了视图层与数据层的自动同步。在传统的前端开发中,我们需要手动操作DOM来更新视图,或者通过事件监听来获取用户输入。而Vue的双向绑定机制则将这些繁琐的操作封装起来&am…

2026/7/19 2:12:34 阅读更多 →
C++单元测试架构设计实战:构建可维护的测试基础设施

C++单元测试架构设计实战:构建可维护的测试基础设施

1. 项目概述:为什么我们需要一个可维护的测试架构?在C项目里摸爬滚打十几年,我见过太多项目在初期为了赶进度,把单元测试写成了一堆散落在各个角落的.cpp文件。这些测试代码往往和业务代码高度耦合,充斥着大量的重复逻…

2026/7/19 2:12:34 阅读更多 →
RecyclerView核心原理与Android列表优化实践

RecyclerView核心原理与Android列表优化实践

1. RecyclerView基础概念与核心价值RecyclerView作为Android开发中最常用的列表控件,其设计初衷是为了解决传统ListView在性能上的瓶颈。记得2014年我第一次在项目中使用RecyclerView时,就被它流畅的滚动体验所震撼。与ListView相比,Recycler…

2026/7/19 2:11:34 阅读更多 →

日新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:00:40 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:00:40 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:00:40 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:00:40 阅读更多 →

月新闻