11 圖解劍指Offer 二進制中1的個數 Java題解

11 圖解劍指Offer 二進制中1的個數 Java題解

題目鏈接

題目描述

輸入一個整數,輸出該數32位二進制表示中1的個數。其中負數用補碼錶示。

題解:

n & (n - 1)的左右是消除最右邊的1,每循環一次count++,即可求出1的個數,while循環直到 n 等於0。

圖解:

在這裏插入圖片描述

代碼:

public class Solution {
    public int NumberOf1(int n) {
        int count = 0;
        while(n != 0){
            count++;
            n = n & (n - 1);
        }
        return count;
    }
}

複雜度

空間複雜度: 空間複雜度爲O(1)
最壞時間複雜度: 遍歷時間複雜度O(n)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章