当前位置: 首页 > news >正文

leetcode_位运算 191.位1的个数

191. 位1的个数

  • 给定一个正整数 n,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中设置位 (set bit,指在某数的二进制表示中值为 1 的二进制位)的个数(也被称为汉明重量)。

1. 字符串 + 列表

class Solution(object):
    def hammingWeight(self, n):
        """
        :type n: int
        :rtype: int
        """
        a = ""
        a = str(bin(n))[2:]
        # 将整数转化为二进制字符串
        b = [int(char) for char in a]
        # 将二进制字符串转换为整数列表
        count = 0
        for i in range(len(b)):
        	# 遍历列表
            if b[i] == 1:
                count += 1

        return count
  • 时间复杂度: O(log(n)) ,因为n的二进制表示大约需要 log(n) 位
  • 空间复杂度: O(log(n))

2. 位运算

class Solution(object):
    def hammingWeight(self, n):
        """
        :type n: int
        :rtype: int
        """
        count = 0
        while n:
            count += n & 1  
            # 通过与运算判断最低位是否为1
            n >>= 1  
            # 右移一位,继续检查下一个二进制位
        return count
  • 时间复杂度: O(log(n))
  • 空间复杂度: O(1)

3. 取余和整数除法

class Solution(object):
    def hammingWeight(self, n):
        a = 0
        if n == 0:
            return 0
        while n > 0:
            a += n % 2  
            # 判断最低位是否为1
            n //= 2  
            # 将n右移一位
        return a
  • 时间复杂度: O(log(n))
  • 空间复杂度: O(1)

相关文章:

  • 网络安全知识:网络安全网格架构
  • List的基本功能(1)
  • Java List 自定义对象排序 Java 8 及以上版本使用 Stream API
  • 服务器释放screen资源(Detached状态并不会释放资源)
  • C++ 设计模式 - 策略模式
  • 【SQL实验】触发器
  • 矩阵-矩阵置零
  • 并查集算法篇上期:并查集原理及实现
  • FreeSWITCH Alpine 安装
  • 【股票数据API接口35】如何获取股票当天分价成交占比数据之Python、Java等多种主流语言实例代码演示通过股票数据接口获取数据
  • 亚马逊的API服务怎么使用?
  • 力扣每日一题【算法学习day.131】
  • 【Erdas实验教程】009:非监督分类及分类后评价
  • TypeScript - 属性修饰符
  • Python 单例模式笔记
  • RFID测温技术:电力设备安全监测的新利器
  • 深入解析Textual库:打造现代化的终端用户界面(TUI)
  • 【Python爬虫(37)】解锁分布式爬虫:原理与架构全解析
  • 深入理解 Kafka 主题分区机制
  • JUC并发—9.并发安全集合四
  • 惠州做网站首选惠州邦/app推广接单平台有哪些
  • 女性时尚资讯+淘宝客模式系列网站源码/怎么优化网站性能
  • 房车网站建设意义/百度pc端网页版
  • 桂林做网站的公司有哪些/个人网站网页首页
  • heliohost wordpress/搜索引擎排名优化是什么意思
  • 天津百度网站排名优化/广州seo招聘