lintcode 365. 二进制中有多少个1

2018-08-29  本文已影响0人  cuizixin

难度:容易

1. Description

365. 二进制中有多少个1

2. Solution

class Solution:
    """
    @param: num: An integer
    @return: An integer
    """
    def countOnes(self, num):
        # write your code here
        if num<0:
            num = 2**31+num
            res = 1
        else:
            res = 0
        while num>0:
            if num%2!=0:
                res+=1
            num = num//2
        return res

更好的方法,使用位操作。

class Solution:
    """
    @param: num: An integer
    @return: An integer
    """
    def countOnes(self, num):
        # write your code here
        res = 0
        for i in range(32):
            res += num & 1
            num >>= 1
        return res

3. Reference

  1. https://www.lintcode.com/problem/count-1-in-binary/description
上一篇 下一篇

猜你喜欢

热点阅读