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---剑指Offer题15---二进制中1的个数