程序对Python中0到n范围内的所有数字的置位总数进行计数
假设我们有一个数字num。对于范围0≤i≤num中的每个数字i,我们必须计算其二进制对应数中1的数目,并将其作为列表返回。因此,如果数字为5,则数字为[0,1,2,3,4,5],而这些数字中的1的数字为[0,1,1,2,2,1,2],因此它将返回7。
为了解决这个问题,我们将遵循以下步骤-
res:=一个保存num+10的数组
偏移量:=0
对于范围在1到num+1之间的
如果i和i−1=0,则res[i]:=1且offset:=0
否则将偏移量增加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