https://leetcode.com/problems/counting-bits/
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.
Example:
For num = 5
you should return [0,1,1,2,1,2]
.
Follow up:
- It is very easy to come up with a solution with run time O(n*sizeof(integer)). But can you do it in linear time O(n) /possibly in a single pass?
- Space complexity should be O(n).
- Can you do it like a boss? Do it without using any builtin function like __builtin_popcount in c++ or in any other language.
- vector - C++ Reference
- http://www.cplusplus.com/reference/vector/vector/?kw=vector
- 二分分治。捡起vector用法。。。
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 class Solution { 6 public: 7 vector<int> countBits(int num) 8 { 9 vector<int> res(num + 1, 0); 10 11 for (int i = 0; i < res.size(); i ++) 12 { 13 res[i] = res[i / 2] + i % 2; 14 } 15 16 return res; 17 } 18 }; 19 20 int main () 21 { 22 Solution testSolution; 23 vector<int> result(5, 0); 24 25 result = testSolution.countBits(5); 26 27 for (int i = 0; i < result.size(); i ++) 28 cout << result[i] << endl; 29 30 char ch; 31 cin >> ch; 32 33 return 0; 34 }