LeetCode 338. 比特位计数

2022-09-06  本文已影响0人  草莓桃子酪酪
题目

给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。

例:
输入:n = 2
输出:[0,1,1]
解释:
0 --> 0
1 --> 1
2 --> 10

方法:内置函数
class Solution(object):
    def countBits(self, n):
        ans = []
        for i in range(n+1):
            num = bin(i)
            ans.append(num.count('1'))
        return ans
方法:动态规划
class Solution(object):
    def countBits(self, n):
        ans = [0] * (n+1)
        for i in range(1, n+1):
            if i % 2 == 1:
                ans[i] = ans[i-1] + 1
            else:
                ans[i] = ans[i/2]
        return ans
相关知识
参考

bin 函数:https://www.runoob.com/python/python-func-bin.html
count 函数:https://www.runoob.com/python/att-string-count.html
代码相关:https://leetcode.cn/problems/counting-bits/solution/hen-qing-xi-de-si-lu-by-duadua/

上一篇下一篇

猜你喜欢

热点阅读