LeetCode简单题之比特位计数

news/2025/2/5 18:37:50/

题目

给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。
示例 1:
输入:n = 2
输出:[0,1,1]
解释:
0 --> 0
1 --> 1
2 --> 10
示例 2:
输入:n = 5
输出:[0,1,1,2,1,2]
解释:
0 --> 0
1 --> 1
2 --> 10
3 --> 11
4 --> 100
5 --> 101
提示:
0 <= n <= 105
进阶:
很容易就能实现时间复杂度为 O(n log n) 的解决方案,你可以在线性时间复杂度 O(n) 内用一趟扫描解决此问题吗?
你能不使用任何内置函数解决此问题吗?(如,C++ 中的 __builtin_popcount )
来源:力扣(LeetCode)

解题思路

  最最直白的方式就是用代码翻译题目,可以将每个数字转化为二进制然后再计算其中1的个数。

class Solution:def countBits(self, n: int) -> List[int]:ans=[]for i in range(n+1):ans.append(str(bin(i)).count('1'))return ans

在这里插入图片描述
  不过像这种看起来十分简单的题,并且是递增1的有序,一般就可能存在潜在的规律。我们不妨多写上几个样例来分析一下:
0 --> 0
1 --> 1
2 --> 10
3 --> 11
4 --> 100
5 --> 101
6 --> 110
7 --> 111
8 --> 1000
9 --> 1001
10–> 1010
11–> 1011
12–> 1100

  不难发现每个偶数的后面都是0,每个奇数的后面都是1,如果相邻的偶数和奇数,偶数如果小于奇数,那么奇数的二进制一定是将偶数最后一位的0改成了1;另外单独观察偶数发现2,4,8是一类,6,12是一类,10是一类,前面两类它都有共同的前缀“1”和“11” 并且2,4,8是以2为等比的数列,6,12也是,不出意外20的前缀也应该是“101”;第一类的前缀只有一个1,那么1的二进制就是它们的前缀,而第二类则 3的二进制是它们的前缀,再一看5也是第三类的前缀且,那么我们大胆猜设以2为等比数列以奇数开头的数的二进制中1的个数同它前面的那一个数字一样,而偶数则是奇数的二进制1的个数加1。

class Solution:def countBits(self, n: int) -> List[int]:ans=[0]flag=1for i in range(1,n+1):if flag:flag=0ans.append(ans[i-1]+1)else:flag=1ans.append(ans[i//2])return ans

在这里插入图片描述


http://www.ppmy.cn/news/606252.html

相关文章

AMD与Intel,挑战英伟达GPU

AMD与Intel&#xff0c;挑战英伟达GPU 作为CPU界的霸主&#xff0c;英特尔对高性能GPU市场一直没有死心。从1998年和Real3D合作推出的i740独显&#xff0c;到2009年无故流产的Larrabee独显&#xff0c;再到去年公布的Xe GPU架构。任谁来都能看出&#xff0c;英特尔进军独立显卡…

LeetCode简单题之汉明距离

题目 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。 给你两个整数 x 和 y&#xff0c;计算并返回它们之间的汉明距离。 示例 1&#xff1a; 输入&#xff1a;x 1, y 4 输出&#xff1a;2 解释&#xff1a; 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 上面的…

LeetCode简单题之验证外星语词典

题目 某种外星语也使用英文小写字母&#xff0c;但可能顺序 order 不同。字母表的顺序&#xff08;order&#xff09;是一些小写字母的排列。 给定一组用外星语书写的单词 words&#xff0c;以及其字母表的顺序 order&#xff0c;只有当给定的单词在这种外星语中按字典序排列时…

从设计到消费产品

从设计到消费产品 半导体简介 半导体&#xff1a;现代电子产品的大脑 当点击、滑触、输入或与电子设备交谈时&#xff0c;希望指令能够得到正确的即时响应。 但是在这个过程中是什么在搜索、量化、优化和交付期望的结果&#xff1f; 在大多数情况下&#xff0c;是半导体。 “半…

Bert系列(二)——源码解读之模型主体

本篇文章主要是解读模型主体代码modeling.py。在阅读这篇文章之前希望读者们对bert的相关理论有一定的了解&#xff0c;尤其是transformer的结构原理&#xff0c;网上的资料很多&#xff0c;本文内容对原理部分就不做过多的介绍了。 我自己写出来其中一个目的也是帮助自己学习整…

EDA技术与市场分析

EDA技术与市场分析 EDA被誉为“芯片之母”&#xff0c;是电子设计的基石产业。拥有百亿美金的EDA市场构筑了整个电子产业的根基&#xff0c;可以说“谁掌握了EDA&#xff0c;谁就有了芯片领域的主导权。 ”近年来&#xff0c;在多个领域面临关键核心技术“卡脖子”的危机&#…

LeetCode简单题之单调数列

题目 如果数组是单调递增或单调递减的&#xff0c;那么它是单调的。 如果对于所有 i < j&#xff0c;A[i] < A[j]&#xff0c;那么数组 A 是单调递增的。 如果对于所有 i < j&#xff0c;A[i]> A[j]&#xff0c;那么数组 A 是单调递减的。 当给定的数组 A 是单调…

LeetCode简单题之比赛中的配对次数

题目 给你一个整数 n &#xff0c;表示比赛中的队伍数。比赛遵循一种独特的赛制&#xff1a; 如果当前队伍数是 偶数 &#xff0c;那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛&#xff0c;且产生 n / 2 支队伍进入下一轮。 如果当前队伍数为 奇数 &#xff0c;那…