程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> [LeetCode] Number of 1 Bits

[LeetCode] Number of 1 Bits

編輯:關於C++

Write a function that takes an unsigned integer and returns the number of ’1’ bits it has (also known as the Hamming weight).

For example, the 32-bit integer ’11’ has binary representation 00000000000000000000000000001011, so the function should return 3.

解題思路1

每一位分別和1進行與運算,統計結果不為0的位數。

實現代碼1

//Runtime:10 ms
#include 
#include "inttypes.h"
using namespace std;

class Solution {
public:
    int hammingWeight(uint32_t n) {
        int i = 0;
        while (n)
        {
            i += n & 0x1;
            n >>= 1;
        }

        return i;
    }
};

int main()
{
    Solution s;
    cout<

解題思路2

每次n&(n-1)可以將n裡面的值為1的位數減少一位

實現代碼2

//Runtime:11 ms
class Solution {
public:
    int hammingWeight(uint32_t n) {
        int i = 0;
        while (n)
        {
            n &= (n-1);
            ++i;
        }

        return i;
    }
};
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved