美文网首页
LeetCode 338. 比特位计数

LeetCode 338. 比特位计数

作者: 草莓桃子酪酪 | 来源:发表于2022-09-06 01:39 被阅读0次
    题目

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

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

    方法:内置函数
    • ans 记录每个数的二进制表示中 1 的个数
    • 循环遍历 [0, n],计算每个数的二进制表示 num,计算每个数的二进制表示的 1 的个数,将该个数加入 ans
    class Solution(object):
        def countBits(self, n):
            ans = []
            for i in range(n+1):
                num = bin(i)
                ans.append(num.count('1'))
            return ans
    
    方法:动态规划
    • ans 记录每个数的二进制表示中 1 的个数
    • 循环遍历 [1, n],计算每个数字的二进制表示的 1 的个数
      • 若数字为奇数,那么它的二进制表示的 1 的个数比前一个数大 1
        0=0 1=1 2=10 3=11
      • 若数字为偶数,那么它的二进制表示的 1 的个数和该数除以二得到的数字的二进制表示的 1 的个数相等
        2=10 4=100 8=1000
    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(x): bin()
      x: 数字

    • count(sub, start, end): str.count()
      sub: 要搜索的子字符串
      start: 字符串开始搜索的位置,默认为字符串的首部
      end: 字符串结束搜索的位置,默认为字符串的尾部

    参考

    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/

    相关文章

      网友评论

          本文标题:LeetCode 338. 比特位计数

          本文链接:https://www.haomeiwen.com/subject/sliwgrtx.html