演算法題 338 位元位計數

2021-10-20 21:03:58 字數 738 閱讀 9243

給定乙個非負整數 num。對於 0 ≤ i ≤ num 範圍中的每個數字 i ,計算其二進位制數中的 1 的數目並將它們作為陣列返回。

示例 1:

輸入: 2

輸出: [0,1,1]

示例 2:

輸入: 5

輸出: [0,1,1,2,1,2]

高階:本題讓我們求解所有樹的二進位制的一的個數,所以我們先來看看數的二進位制,來看看是否有什麼規律

0 110 11

100 101 110 111

1000 1001 1010 1011 1100 1101 1110 1111

看上面的數是不是可以發現什麼,其實每乙個梯度的數量都是之前的梯度的數量和,在對比下100和0,101和1,110和10,可以發現其實第三梯度就是比他們多了乙個首位1。找到了對應關係,我們就好求解了

class

solution

int[

] bits =

newint

[num +1]

; bits[1]

=1;long end =2;

int index =0;

for(

int i =

2; i < bits.length; i++

) bits[i]

= bits[index++]+

1;}return bits;

}}

338 位元位計數

給定乙個非負整數num。對於0 i num範圍中的每個數字i,計算其二進位制數中的 1 的數目並將它們作為陣列返回。示例 1 輸入 2輸出 0,1,1 示例 2 輸入 5輸出 0,1,1,2,1,2 高階 要求演算法的空間複雜度為o n 你能進一步完善解法嗎?要求在c 或任何其他語言中不使用任何內建...

338 位元位計數

給定乙個非負整數num。對於0 i num範圍中的每個數字i,計算其二進位制數中的 1 的數目並將它們作為陣列返回。示例 1 輸入 2 輸出 0,1,1 示例 2 輸入 5輸出 0,1,1,2,1,2 高階 要求演算法的空間複雜度為o n 你能進一步完善解法嗎?要求在c 或任何其他語言中不使用任何內...

338 位元位計數

題目描述 給定乙個非負整數 num。對於 0 i num 範圍中的每個數字 i 計算其二進位制數中的 1 的數目並將它們作為陣列返回。示例 1 輸入 2 輸出 0,1,1 示例 2 輸入 5 輸出 0,1,1,2,1,2 高階 方法1 直接對每乙個數字進行判斷 主要思路 1 對每乙個數字單獨判斷其二...