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:
https://leetcode.com/problems/counting-bits/
计算转成二进制之后有几个1。
动态规划,二进制每多一位就把结果数组中所有的结果都加一,再放回结果数组中。
Java:
public class Solution {
public static int[] countBits(int num) {
if(num == 0) return new int[]{0};
int[] result = new int[num + 1];
int len, count = 0;
while(true){
len = count + 1;
for(int i = 0; i < len; i++){
count++;
result[count] = result[i] + 1;
if(count >= num)
return result;
}
}
}
}
Javascript,和Java一样的代码,强行MLE,等几天看看是不是bug能否被修复:
/**
* @param {number} num
* @return {number[]}
*/
var countBits = function(num) {
if(num === 0) return [0];
var result = [0], len, count = 0;
while(true){
len = result.length;
for(var i = 0; i < len; i++){
result.push(result[i] + 1);
count++;
if(count >= num)
return result;
}
}
};
[LeetCode][Java][JavaScript]Counting Bits
原文:http://www.cnblogs.com/Liok3187/p/5296180.html