LeetCode 1545.找出第 N 个二进制字符串中的第 K 位:模拟 或 递归(数学)
【LetMeFly】1545.找出第 N 个二进制字符串中的第 K 位模拟 或 递归(数学)力扣题目链接https://leetcode.cn/problems/find-kth-bit-in-nth-binary-string/给你两个正整数n和k二进制字符串Sn的形成规则如下S1 0当i 1时Si Si-1 1 reverse(invert(Si-1))其中表示串联操作reverse(x)返回反转x后得到的字符串而invert(x)则会翻转 x 中的每一位0 变为 1而 1 变为 0。例如符合上述描述的序列的前 4 个字符串依次是S1 0S2 011S3 0111001S4 011100110110001请你返回Sn的第k位字符题目数据保证k一定在Sn长度范围以内。示例 1输入n 3, k 1输出0解释S3为 0111001其第 1 位为 0 。示例 2输入n 4, k 11输出1解释S4为 011100110110001其第 11 位为 1 。示例 3输入n 1, k 1输出0示例 4输入n 2, k 3输出1提示1 n 201 k 2n- 1解题方法解题方法一模拟写一个函数求当前字符串的下一个字符串一直模拟n − 1 n-1n−1次next就好了。注意最终返回下标k-1。时间复杂度O ( 2 n ) O(2^n)O(2n)空间复杂度O ( 2 n ) O(2^n)O(2n)AC代码C/* * LastEditTime: 2026-03-03 09:14:52 */classSolution{private:voidinvert(strings){for(charc:s){cc0?1:0;}}stringnext(stringnow){string ansnow1;invert(now);reverse(now.begin(),now.end());ansnow;returnans;}public:charfindKthBit(intn,intk){string now0;for(inti2;in;i){nownext(now);}returnnow[k-1];}};解题方法二递归 数学对于字符串长度n1 1 n2 2 * n1 1 n3 2 * n2 1 ... n_k ?答案是n k 2 k − 1 n_k2^k-1nk​2k−1原因如下n k 1 2 n k 1 n_{k1} 2n_k 1nk1​2nk​1两边都加一n k 1 1 2 n k 1 1 2 ( n k 1 ) n_{k1} 1 2n_k 1 1 2(n_k 1)nk1​12nk​112(nk​1)令a k n k 1 a_k n_k 1ak​nk​1则a k 1 2 ⋅ a k a_{k1} 2 \cdot a_kak1​2⋅ak​a k a_kak​是一个公比为2的等比数列且初项a 1 n 1 1 2 a_1n_112a1​n1​12所以a k 2 k a_k2^kak​2k由于a k n k 1 a_k n_k 1ak​nk​1所以n k a k − 1 2 k − 1 n_ka_k-12^k-1nk​ak​−12k−1。那么findKthBit就可以依据字符串的长度计算自n nn计算出要找的k kk在字符串中的哪个位置了字符串长度为2 n − 1 2^n-12n−1记为l e n lenlen说明生成这个字符串的上一个字符串的长度为l e n 2 \frac{len}{2}2len​记为h a l f _ l e n half\_lenhalf_len。如果k h a l f _ l e n 1 khalf\_len1khalf_len1则说明正好处在Si Si-1 “1” reverse(invert(Si-1))中间的1直接返回1如果k ≤ h a l f _ l e n k\leq half\_lenk≤half_len则说明处在Si-1部分返回findKthBit(n - 1, k)否则说明处在reverse(invert(Si-1))位置k kk在l e n lenlen中是倒数第l e n − k 1 len-k1len−k1个元素返回revert(findKthBit(n - 1, len - k 1))。时间复杂度O ( n ) O(n)O(n)空间复杂度O ( n ) O(n)O(n)AC代码C/* * LastEditTime: 2026-03-03 09:39:20 */classSolution{private:inlinecharinvert(charc){returnc0?1:0;}public:charfindKthBit(intn,intk){if(n1){return0;}intlen(1n)-1;inthalf_lenlen1;if(khalf_len1){return1;}elseif(khalf_len){returnfindKthBit(n-1,k);}else{returninvert(findKthBit(n-1,len-k1));// n 2, k 3 - len 3, half_len 1, next_k 1}}};Python LastEditTime: 2026-03-03 20:16:16 classSolution:definvert(self,n:str)-str:return1ifn0else0deffindKthBit(self,n:int,k:int)-str:ifn1:return0len(1n)-1halflen1ifkhalf1:return1elifkhalf:returnself.findKthBit(n-1,k)else:returnself.invert(self.findKthBit(n-1,len-k1))C当然也可以/* * LastEditTime: 2026-03-03 09:28:21 */classSolution{public:charfindKthBit(intn,intk,boolinvertfalse){if(n1){returninvert?1:0;}intlen(1n)-1;inthalf_lenlen1;if(khalf_len1){returninvert?0:1;}elseif(khalf_len){returnfindKthBit(n-1,k,invert);}else{returnfindKthBit(n-1,len-k1,1^invert);// n 2, k 3 - len 3, half_len 1, next_k 1}}};同步发文于CSDN和我的个人博客原创不易转载经作者同意后请附上原文链接哦~千篇源码题解已开源

相关新闻

健身俱乐部网站信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

健身俱乐部网站信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

摘要 随着健康生活理念的普及和全民健身政策的推进,健身俱乐部行业迎来快速发展期。传统的会员管理和课程预约方式已无法满足现代健身俱乐部的运营需求,亟需一套高效、智能的信息管理系统来提升管理效率和服务质量。该系统通过数字化手段整合会员信息、课…

2026/7/12 20:50:19 阅读更多 →
获取省市区数据的API调用(百度地图)

获取省市区数据的API调用(百度地图)

目录 1.创建API Key 2.创建类 (1)BaiduUtil工具类 (2) BaiduMapVO (值对象类) (3) SysAreaMapper (数据访问层) (4) AreaSyncUtil (同步工具类) 3.调用关系图 执行流程说明 1.创建API Key 来到百度地图开放平台,登录之后点击"创建应用" 控制台 …

2026/7/12 18:15:21 阅读更多 →
Java SpringBoot+Vue3+MyBatis 考研互助交流平台系统源码|前后端分离+MySQL数据库

Java SpringBoot+Vue3+MyBatis 考研互助交流平台系统源码|前后端分离+MySQL数据库

摘要 随着高等教育普及和考研竞争日益激烈,考生对高效、便捷的考研互助交流平台需求显著增加。传统论坛和社交平台功能分散,难以满足考生对精准信息获取、经验分享及学习资源整合的需求。考研互助交流平台旨在提供一个专注于考研群体的垂直社区&#xff…

2026/7/9 17:27:12 阅读更多 →

最新新闻

Cesium 海量点教程

Cesium 海量点教程

海量点 Mass Points ▶ 在线运行案例 案例合集: 三维可视化功能案例(threehub.cn)开源仓库github地址: https://github.com/z2586300277/three-cesium-examples400个案例代码: 网盘链接 你将学到什么 BillboardCollection 相…

2026/7/14 2:03:54 阅读更多 →
终极NVIDIA Profile Inspector深度指南:解锁显卡驱动的完整性能控制权 [特殊字符]

终极NVIDIA Profile Inspector深度指南:解锁显卡驱动的完整性能控制权 [特殊字符]

终极NVIDIA Profile Inspector深度指南:解锁显卡驱动的完整性能控制权 🚀 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款革命性的开源工具&…

2026/7/14 2:03:54 阅读更多 →
Unity游戏转微信小游戏:从WebGL配置到真机调试全流程实战

Unity游戏转微信小游戏:从WebGL配置到真机调试全流程实战

1. 项目概述:为什么Unity游戏要上微信小游戏?作为一名在游戏行业摸爬滚打了十多年的老开发,我见过太多团队在项目立项时雄心勃勃,上线后却为流量和分发渠道发愁。Unity引擎开发的游戏,无论是PC、主机还是移动端&#x…

2026/7/14 2:01:53 阅读更多 →
基于TPS61170的高效DC-DC升压转换设计与实现

基于TPS61170的高效DC-DC升压转换设计与实现

1. 项目概述与核心器件选型在电子系统设计中,高压DC-DC升压转换是一个常见但颇具挑战性的需求。我最近完成了一个基于TPS61170和MSP432P401R的高效升压转换项目,成功实现了从5V输入到24V/150mA输出的稳定转换。这个方案特别适合需要紧凑型高压电源的嵌入…

2026/7/14 2:01:53 阅读更多 →
用Python构建可配置AI人格系统

用Python构建可配置AI人格系统

1. 项目概述:这不是在写聊天机器人,而是在“养”一个有呼吸感的AI角色你有没有试过和某个AI对话时,突然被一句带点小调侃、略带犹豫、甚至故意卖个关子的回复击中?不是那种“您好,我是AI助手,很高兴为您服务…

2026/7/14 1:59:53 阅读更多 →
Unity新输入系统实战:从核心概念到跨平台配置与按键重绑定

Unity新输入系统实战:从核心概念到跨平台配置与按键重绑定

1. 项目概述:为什么我们需要新的输入系统?如果你是从Unity 2019或更早版本一路用过来的开发者,肯定对Input.GetKeyDown(KeyCode.Space)和Input.GetAxis(“Horizontal”)这类代码再熟悉不过了。这套经典的输入系统(Legacy Input Sy…

2026/7/14 1:57:52 阅读更多 →

日新闻

AI Agent数据越界行为如何被精准溯源?——基于GDPR/CCPA双合规的5层审计框架实战指南

AI Agent数据越界行为如何被精准溯源?——基于GDPR/CCPA双合规的5层审计框架实战指南

更多请点击: https://kaifayun.com 第一章:AI Agent数据越界行为的合规性挑战与溯源必要性 AI Agent在自主执行任务过程中,可能因提示注入、上下文污染或权限配置缺陷,无意或有意访问、缓存、传输受保护数据(如PII、G…

2026/7/14 0:01:13 阅读更多 →
Perplexity vs ChatGPT vs Claude:实测127组复杂查询任务,谁才是真正可靠的“事实型AI助手”?

Perplexity vs ChatGPT vs Claude:实测127组复杂查询任务,谁才是真正可靠的“事实型AI助手”?

更多请点击: https://codechina.net 第一章:Perplexity 怎么用 Perplexity 是衡量语言模型预测能力的核心指标,数值越低表示模型对文本序列的不确定性越小、预测越精准。它本质上是交叉熵损失的指数形式,计算公式为:…

2026/7/14 0:01:13 阅读更多 →
全球首发!五一视界定制物理AI卫星ECS-1剑指万亿赛道

全球首发!五一视界定制物理AI卫星ECS-1剑指万亿赛道

五一视界发布公告,近日,公司与环天智慧科技股份有限公司(“环天智慧”)正式达成空天领域战略合作。环天智慧是国内领先、聚焦天基对地观测遥感卫星总体研制与在轨运营的商业航天企业,同时也是西南地区规模最大、具备全自主可控遥感卫星星座建…

2026/7/14 0:03:13 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/13 4:38:36 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/13 4:38:38 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/13 4:38:40 阅读更多 →

月新闻