未给出预期输出的计数位
Counting Bits giving not the expected output
试图解决Counting Bits using JavaScript
,基本上finding the number of set bits for all numbers from 0 to N and push them in an array and return as answer
这是解释
Input: n = 5
Output: [0,1,1,2,1,2]
Explanation:
0 --> 0
1 --> 1
2 --> 10
3 --> 11
4 --> 100
5 --> 101
这是Java脚本
中的解决方案
const countBits = function (nums){
let mem = [];
mem[0] = 0;
for (let i=0;i<=nums;i++)
mem[i] = mem[i/2] + i%2;
return mem;
}
我看到输出为
PS C:\VSB-PRO> node Fibo.js
[ 0, NaN, NaN, NaN, NaN ]
这里是尝试转换的参考代码,之前写在Java
class Solution {
public:
vector<int> countBits(int num) {
//mem[i] = No of 1s from 0 to number i
vector<int> mem(num+1);
mem[0] = 0;
for(int i=1;i<=num;++i)
mem[i] = mem[i/2] + i%2;
return mem;
}
};
非常感谢您的帮助
此致,
卡罗琳
将正数转换为 Javascript 字符串对象对您有用
console.log(Number(256).toString(2)); // 100000000
如果您的数组同时包含正数和负数,那么您可以再次使用带有 toString 方法的“unsigned right shift”运算符。
console.log((-256 >>> 0).toString(2)); // 11111111111111111111111100000000
问题是,在Java中,当操作数是整数时,/
表示整数除法,但在Java脚本中,除法将是浮点数除法,因此1 /2 == 0.5,然后 mem[0.5]
将是一个未定义的值。
使用位移运算符来获得相同的行为:
const countBits = function(nums) {
let mem = [0];
for (let i = 0; i <= nums; i++)
mem[i] = mem[i >> 1] + i % 2;
return mem;
}
console.log(countBits(5));
试图解决Counting Bits using JavaScript
,基本上finding the number of set bits for all numbers from 0 to N and push them in an array and return as answer
这是解释
Input: n = 5
Output: [0,1,1,2,1,2]
Explanation:
0 --> 0
1 --> 1
2 --> 10
3 --> 11
4 --> 100
5 --> 101
这是Java脚本
中的解决方案 const countBits = function (nums){
let mem = [];
mem[0] = 0;
for (let i=0;i<=nums;i++)
mem[i] = mem[i/2] + i%2;
return mem;
}
我看到输出为
PS C:\VSB-PRO> node Fibo.js
[ 0, NaN, NaN, NaN, NaN ]
这里是尝试转换的参考代码,之前写在Java
class Solution {
public:
vector<int> countBits(int num) {
//mem[i] = No of 1s from 0 to number i
vector<int> mem(num+1);
mem[0] = 0;
for(int i=1;i<=num;++i)
mem[i] = mem[i/2] + i%2;
return mem;
}
};
非常感谢您的帮助
此致,
卡罗琳
将正数转换为 Javascript 字符串对象对您有用
console.log(Number(256).toString(2)); // 100000000
如果您的数组同时包含正数和负数,那么您可以再次使用带有 toString 方法的“unsigned right shift”运算符。
console.log((-256 >>> 0).toString(2)); // 11111111111111111111111100000000
问题是,在Java中,当操作数是整数时,/
表示整数除法,但在Java脚本中,除法将是浮点数除法,因此1 /2 == 0.5,然后 mem[0.5]
将是一个未定义的值。
使用位移运算符来获得相同的行为:
const countBits = function(nums) {
let mem = [0];
for (let i = 0; i <= nums; i++)
mem[i] = mem[i >> 1] + i % 2;
return mem;
}
console.log(countBits(5));