Python程序:计算0到n范围内所有数字的集合位总数
假设我们有一个数字num。对于0 ≤ i ≤ num范围内的每个数字i,我们必须计算其二进制对应物中1的个数,并将它们作为列表返回。因此,如果数字是5,则数字为[0, 1, 2, 3, 4, 5],这些数字中1的个数为[0, 1, 1, 2, 1, 2],所以它将返回7。
为了解决这个问题,我们将遵循以下步骤:
res := 一个包含num + 1个0的数组
offset := 0
对于范围1到num + 1中的i
如果i和i - 1 = 0,则res[i] := 1且offset := 0
否则,将offset增加1,res[i] := 1 + res[offset]
返回res元素的总和
让我们看下面的实现来更好地理解:
示例
class Solution: def countBits(self, num): result = [0] * (num+1) offset = 0 for i in range(1,num+1): if i & i-1 == 0: result[i] = 1 offset = 0 else: offset+=1 result[i] = 1 + result[offset] return sum(result) ob1 = Solution() print(ob1.countBits(5))
输入
5
输出
7
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP