zoukankan      html  css  js  c++  java
  • 338. 比特位计数.py

    from typing import List
    # 338比特位计数,可以通过三种方法来做。
    # 第一种:暴力法,一边循环遍历,然后求出每个数字转化为二进制的1的个数。
    # 第二种:递归法,但是需要递归的过程中将结果记录下来,使用数组将每次计算的结果存起来。
    # 第三种方法和第二种类似,都是使用数组将之前算的结果存储下来,供当前数字调用。
    class Solution:
    def countBits1(self, num: int) -> List[int]:
    if num < 0:
    return []
    num //= 1
    res = []
    # 直接循环,二进制转换,然后统计1的个数。
    for i in range(num + 1):
    res.append(bin(i).count('1'))
    return res
    def countBits2(self, num: int) -> List[int]:
    self.res,self.cur_list = [],[]
    # 循环调用函数,
    for i in range(num + 1):
    self.res.append(self.count_1(i))
    return self.res
    def count_1(self,num):
    if num == 0:
    res = 0
    elif num % 2 == 1:
    res = self.cur_list[num // 2] + 1
    elif num % 2 == 0:
    res = self.cur_list[num // 2]
    self.cur_list.append(res)
    return res
    def countBits3(self, num: int) -> List[int]:
    self.res = [0] * (num + 1)
    for i in range(num + 1):
    self.res[i] = self.res[i >> 1] + (i & 1)
    return self.res
    A = Solution()
    print(A.countBits(4))
  • 相关阅读:
    isinstance函数
    Django之ORM那些相关操作
    Django ~ 2
    Django ~ 1
    Django详解之models操作
    Django模板语言相关内容
    livevent的几个问题
    客户端,服务器发包走向
    关闭客户端连接的两种情况
    std::vector<Channel2*> m_allChannels;容器,以及如何根据channelid的意义
  • 原文地址:https://www.cnblogs.com/cong12586/p/14473046.html
Copyright © 2011-2022 走看看