计算十进制 i 对应的二进制数中 “1” 的个数
给定一个非负整数 num,对于任意 i,0 ≤ i ≤ num,计算 i 的值对应的二进制数中 "1" 的个数,将这些结果返回为一个数组。(标题只是一个数)
js 转2进制解法 :
function countBit(n) {return n.toString(2).replace(/0/g,"").length;}
按位判断法:
function countBit(n) {var ret = 0;while(n > 0) {ret += n & 1;n >>= 1; // 按位右移,最后 n === 0}return ret;}
按位迭代法:
// 规律: countBit(n & (n - 1)) === countBit(n) - 1function countBit(n) {var ret = 0;while(n > 0) {ret++;n &= n - 1;}return ret;}
根据规律直接递推(完整版):
function countBits(nums) {var ret = [0];for(var i = 1; i <= nums; i++) {ret.push(ret[i & i - 1] + 1);}return ret;}