leetcode 338. 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.


class Solution {
	 int count(int n)
	 {
		 int cnt = 0;
		 while (n != 0)
		 {
			 cnt += n % 2;
			 n = n / 2;
		 }
		 return cnt;
	 }
 public:
	 vector<int> countBits(int num) {
		 vector<int>re;
		 int k = 0;
		 while (k <= num)
		 {
			 re.push_back(count(k));
			 k++;
		 }
		 return re;
	 }
 };

accepted


你可能感兴趣的:(LeetCode)