网易首页 > 网易号 > 正文 申请入驻

2026-06-03:统计单比特整数。用go语言,给定一个整数 n。我们把形如其二进制表示中每一位都一样(全是 0 或全是 1)的整数称为“单比特

0
分享至

2026-06-03:统计单比特整数。用go语言,给定一个整数 n。我们把形如其二进制表示中每一位都一样(全是 0 或全是 1)的整数称为“单比特数”。

要求你统计在区间 [0, n](包含 0 和 n)内一共有多少个“单比特数”。输出这个数量即可。

0 <= n <= 1000。

输入: n = 4。

输出: 3。

解释:

范围[0, 4]内的整数对应的二进制表示为"0"、"1"、"10"、"11"和"100"。

只有0、1和3满足单比特条件。因此答案是3。

题目来自力扣3827。

一、先梳理手动解题步骤

以输入n=4为例,完整过程:

  1. 1.遍历区间内所有数字:依次检查 0、1、2、3、4 这5个数字

  2. 2.逐个判断是否为单比特数

  • • 数字0:二进制0→ 全0 → 是单比特数

  • • 数字1:二进制1→ 全1 → 是单比特数

  • • 数字2:二进制10→ 有1有0 → 不是

  • • 数字3:二进制11→ 全1 → 是单比特数

  • • 数字4:二进制100→ 有1有0 → 不是

3.统计符合条件的数量:0、1、3 共3个 → 最终结果为3

二、代码实现的核心逻辑分步解析

代码没有逐个遍历判断,而是用数学规律直接计算,效率更高,步骤如下:

步骤1:确定核心规律

所有合法的单比特数(全1数)有固定格式:
1位全1:1(2¹-1)、2位全1:3(2²-1)、3位全1:7(2³-1)、4位全1:15(2⁴-1)……
再加上数字0,就是全部的单比特数。

步骤2:计算数字 n+1 的二进制位数

代码中执行n + 1,再用bits.Len()计算这个数的二进制有效位数

  • • 示例中 n=4,n+1=5,5的二进制是101,有效位数为3

  • • 这个位数代表:[0,n]内的全1单比特数,最多有多少位

步骤3:推导单比特数总个数

二进制位数 = 全1单比特数的个数,再加上数字0,就是最终总数:

  • • 位数3 → 对应3个全1数:1(1位)、3(2位)、7(3位)

  • • 过滤掉超过n的数(7>4,排除),剩余1、3两个全1数

  • • 加上数字0,总个数=2+1=3,和题目结果一致

步骤4:输出最终结果

代码直接返回计算出的总数,完成统计。

三、复杂度分析 1. 时间复杂度

  • • 代码仅执行了固定次数的数学运算(加法、二进制位数计算),没有循环、没有遍历

  • • 无论n的取值是0还是1000,运算次数都不变

  • • 结论:时间复杂度为 O(1)(常数级)

2. 额外空间复杂度
  • • 代码只定义了几个普通变量(n、result),没有使用数组、切片、map等动态数据结构

  • • 没有随输入规模增长而占用更多内存

  • • 结论:额外空间复杂度为 O(1)(常数级)

总结
  1. 1. 解题核心:利用单比特数的二进制规律,不遍历直接计算;

  2. 2. 完整流程:计算n+1的二进制位数 → 确定全1单比特数 → 加上数字0统计总数;

  3. 3. 复杂度:时间O(1),额外空间O(1)。

Go完整代码如下:

package main

import (
"fmt"
"math/bits"
)

func countMonobit(n int)int {
return bits.Len(uint(n + 1))
}

func main() {
n := 4
result := countMonobit(n)
fmt.Println(result)
}

Python完整代码如下:

# -*-coding:utf-8-*-

def count_monobit(n: int) -> int:
"""
计算需要多少个单比特数(形如 2^k - 1)才能覆盖到 n
等价于计算 (n+1) 的二进制位数
"""
return (n + 1).bit_length()

def main():
n = 4
result = count_monobit(n)
print(result)

if __name__ == "__main__":
main()

C++完整代码如下:

  





// 如果编译器支持C++20,使用std::bit_width
int countMonobit(int n) {
// std::bit_width返回无符号整数类型的二进制位数
// 注意:std::bit_width(0)返回0,与bits.Len行为一致
return std::bit_width(static_cast int >(n + 1 ));
}

int main() {
int n = 4 ;
int result = countMonobit(n);
std::cout << result << std::endl;
return 0 ;
}

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
国足大名单或迎大换血!5大U23新星有望成主力,张玉宁正式顶替武磊

国足大名单或迎大换血!5大U23新星有望成主力,张玉宁正式顶替武磊

禾三千体育
2026-08-12 14:41:24
中日罕见达成一致,高市总算做对了,台当局自取其辱,阴谋被揭穿

中日罕见达成一致,高市总算做对了,台当局自取其辱,阴谋被揭穿

爱的境界是心疼
2026-08-12 05:42:22
以军把枪口对准中国记者 但挡不住真相传遍世界

以军把枪口对准中国记者 但挡不住真相传遍世界

看看新闻Knews
2026-08-09 23:56:19
伊朗最高领袖连夜签了6张任命状:71岁老将一人身兼两个关键职位,他前面两任全死于空袭

伊朗最高领袖连夜签了6张任命状:71岁老将一人身兼两个关键职位,他前面两任全死于空袭

网易新闻出品
2026-08-11 18:56:48
有哪些东西已经贵到不值得买了,网友:终于有人说了!

有哪些东西已经贵到不值得买了,网友:终于有人说了!

另子维爱读史
2026-08-12 22:05:28
内蒙古警方通报“一辆警车擅自更换车标”

内蒙古警方通报“一辆警车擅自更换车标”

观察者网
2026-08-11 13:33:07
全国田径锦标赛:小孩姐陈妤颉11秒25头名晋级,葛曼棋刷新赛季最佳

全国田径锦标赛:小孩姐陈妤颉11秒25头名晋级,葛曼棋刷新赛季最佳

全景体育V
2026-08-12 21:06:50
巴菲特的智慧:如果你有几十万积蓄,请务必掌握“三弃”的法则

巴菲特的智慧:如果你有几十万积蓄,请务必掌握“三弃”的法则

阿胖读书
2026-08-10 14:26:25
哪吒获奖无人站起,惊蛰无声获奖全体起立,讽刺的是哪吒的奖更大

哪吒获奖无人站起,惊蛰无声获奖全体起立,讽刺的是哪吒的奖更大

芊手若
2026-08-11 11:13:13
死伤惨重!德国死亡人数过万,欧洲死亡累积超2.5万人

死伤惨重!德国死亡人数过万,欧洲死亡累积超2.5万人

果妈聊娱乐
2026-08-11 18:45:08
福建该市水利局原党组书记、局长涉嫌严重违纪违法被查

福建该市水利局原党组书记、局长涉嫌严重违纪违法被查

大闽门户
2026-08-12 19:30:19
上海“婚外胚胎案”妻子称遭到短信轰炸,回应“奢侈美容”“给狗过天价生日”等传言:荒诞至极

上海“婚外胚胎案”妻子称遭到短信轰炸,回应“奢侈美容”“给狗过天价生日”等传言:荒诞至极

极目新闻
2026-08-12 08:57:34
朱镕基同志逝世,他为我们留下哪些宝贵的精神财富

朱镕基同志逝世,他为我们留下哪些宝贵的精神财富

财经作家华祥名
2026-08-12 21:55:28
真是没想到!8月12日凌晨中国女篮传来3大主力,李梦、韩旭、张子宇最新消息!宫鲁鸣压力大

真是没想到!8月12日凌晨中国女篮传来3大主力,李梦、韩旭、张子宇最新消息!宫鲁鸣压力大

小七说篮球
2026-08-12 09:44:04
第二批朝鲜兵抵达俄罗斯!兵力5万+新武器,泽连斯基最担心的事情还是发生了

第二批朝鲜兵抵达俄罗斯!兵力5万+新武器,泽连斯基最担心的事情还是发生了

军武次位面
2026-08-10 17:55:01
中方面向全世界划定规则:台海开战,出兵参战即等同侵略中国领土

中方面向全世界划定规则:台海开战,出兵参战即等同侵略中国领土

古史青云啊
2026-08-12 11:30:06
49年军区政委返乡想报杀母之仇,毛主席大手一挥:把425团带去!

49年军区政委返乡想报杀母之仇,毛主席大手一挥:把425团带去!

芊芊子吟
2026-08-08 09:40:09
125亿美元收购湖人创纪录 比去年成交价高出25亿

125亿美元收购湖人创纪录 比去年成交价高出25亿

竞技风云录
2026-08-12 23:41:54
Here we go!罗马诺:斯彭斯加盟国际米兰,转会费3150万欧元

Here we go!罗马诺:斯彭斯加盟国际米兰,转会费3150万欧元

懂球帝
2026-08-12 22:13:30
HWG!3150万欧敲定英格兰国脚,国米“精打细算”迎来右路新答案

HWG!3150万欧敲定英格兰国脚,国米“精打细算”迎来右路新答案

智道足球
2026-08-12 22:12:33
2026-08-12 23:56:49
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1388文章数 79关注度
往期回顾 全部

科技要闻

Manus第二季,浪子回头

头条要闻

外卖小哥称"我人生最后一天啦" 女顾客收信息果断报警

头条要闻

外卖小哥称"我人生最后一天啦" 女顾客收信息果断报警

体育要闻

杜兰特,所谓的“联盟小王”

娱乐要闻

老戏骨杨昆两夺金鹰奖,因物业费被告

财经要闻

华尔街把AI算力炒成下一个房地产?

汽车要闻

这台大众不一般 上汽大众ID.ERA.5S综合续航约2000公里

态度原创

时尚
艺术
游戏
本地
公开课

炎炎盛夏,正好Sportique一下!

艺术要闻

高2600米!日本的海上“四面体城市”,可住百万人

《GTA6》PS5 Pro或也难跑60帧 被CPU性能拖后腿

本地新闻

黄州一夜,苏轼写给普通人的月光

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版