[338] LeetCode。ビット(ビット演算)をカウント

非負整数NUMを考えます。0≤I≤I、二進数字1と配列として返すそれらの数を算出し、各デジタルNUM範囲のため。

実施例1:
入力:2
出力:[0,1,1]

例2:
入力:5
出力:[0,1,1,2,1,2]

解決方法1:ライブラリ関数を使用します

class Solution {
    public int[] countBits(int num) {
        int[] arr = new int[num + 1];
        for(int i = 0; i <= num; i++){
            arr[i] = Integer.bitCount(i);
        }
        return arr;
    }
}

対処方法2:

class Solution {
    public int[] countBits(int num) {
        int[] arr = new int[num + 1];
        for(int i = 1; i <= num; i++){
            arr[i] = arr[(i & i- 1)] + 1;
        }
        return arr;
    }
}

おすすめ

転載: www.cnblogs.com/whisperbb/p/12623889.html