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))
  • 相关阅读:
    假期实践
    每周更新学习进度表
    作业三
    作业一
    作业二
    真实感海洋的绘制(一):基于统计学模型的水面模拟方法
    递推方程的求解
    真实感海洋的绘制(二):使用快速傅里叶变换加速波形计算
    "Mathematical Analysis of Algorithms" 阅读心得
    HTML2
  • 原文地址:https://www.cnblogs.com/cong12586/p/14473046.html
Copyright © 2011-2022 走看看