[程式設計題] lk [338. 位元位計數-位運算]
阿新 • • 發佈:2020-07-30
[程式設計題] 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:輸出如下: