338. Counting Bitside
Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1's in their binary representation and return them as an array.spa
Example:
For num = 5
you should return [0,1,1,2,1,2]
.code
題目大意:orm
給一個數字,好比5,那麼5以前全部的整數的每一個二進制表示中1的個數。it
思路:io
數字 | 二進制表示 | 二進制中1的個數 |
0 | 0 | 0 |
1 |
1 | 1 |
2 |
10 | 1 |
3 | 11 | 2 |
4 | 100 | 1 |
5 | 101 | 2 |
6 | 110 | 2 |
7 | 111 | 3 |
8 | 1000 | 1 |
9 | 1001 | 2 |
10 | 1010 | 2 |
11 | 1011 | 3 |
12 | 1100 | 2 |
13 | 1101 | 3 |
14 | 1110 | 3 |
15 | 1111 | 4 |
16 | 10000 | 1 |
代碼以下:table
class Solution { public: vector<int> countBits(int num) { vector<int> result; if(num == 0) { result.push_back(0); return result; } if(num == 1) { result.push_back(0); result.push_back(1); return result; } result.push_back(0); result.push_back(1); int temp = 2; for(int i = 2; i <=num ; i++) { if(i == temp*2) temp *= 2; result.push_back(result[i-temp] + 1); } return result; } };
2016-09-01 18:57:26class