1. 程式人生 > 實用技巧 >[程式設計題] lk [338. 位元位計數-位運算]

[程式設計題] lk [338. 位元位計數-位運算]

[程式設計題] lk 338. 位元位計數-位運算

題目

輸入輸出

思想:

​ 題意是給5,那麼就分別算0,1,2,3,4,5這些數字化為二進位制的時候其中的1的個數,我們對每個數計算二進位制個數的話都用一次位運算計數處理

方法1:位運算

class Solution {
    //方法1:藉助位運算
    /*題目思想:題意是給5,那麼就分別算0,1,2,3,4,5這些數字化為二進位制的時候其中的1的個數
        我們對每個數計算二進位制個數的話都用一次位運算計數處理*/
    public int[] countBits(int num) {
        int[] res = new int[num+1];
        res[0] = 0;
        for(int i=1;i<=num;i++){
            int count=0;
            int j=i;  //先拿到本次要處理的值儲存給變數j,因為變數i在陣列索引還要用
            while(j!=0){
                j = j & (j-1);
                count++;
            }
            res[i] = count;
        }
        return res;
    }   
}

輸出:

輸入5:輸出如下: