LeetCode面试题15. 二进制中1的个数

Posted cling-cling

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode面试题15. 二进制中1的个数相关的知识,希望对你有一定的参考价值。

题目:

技术图片

思路:

1、直观思路就是将十进制数转换成二进制后,统计二进制中1的个数。可以在转换过程中统计,也可以转换后将二进制字符串转换成int列表累加。
技术图片

2、基于位操作的方法更简单

  • 逐位判断: 利用与运算判断最右位是否为1,然后无符号右移
  • 利用n&(n-1)
    技术图片

代码:

Python

class Solution(object):
    def hammingWeight(self, n):
        """
        :type n: int
        :rtype: int
        """
        # # 进制转换
        # count = 0
        # while n:
        #     count += n % 2
        #     n = n // 2
        # return count

        # # 逐位操作
        # count = 0
        # while n:
        #     count += n & 1
        #     n >>= 1
        # return count

        # 利用n&(n-1)
        count = 0
        while n:
            count += 1
            n &= n-1
        return count

相关问题



以上是关于LeetCode面试题15. 二进制中1的个数的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode面试题15. 二进制中1的个数

Leetcode---剑指Offer题15---二进制中1的个数

Leetcode---剑指Offer题15---二进制中1的个数

剑指offer面试题 15. 二进制中 1 的个数

面试题15:二进制中 1 的个数

面试题15:二进制中1的个数