Intentar resolver los Counting Bits using JavaScript , básicamente finding the number of set bits for all numbers from 0 to N and push them in an array and return as answer
aquí está la explicación
Input: n = 5 Output: [0,1,1,2,1,2] Explanation: 0 --> 0 1 --> 1 2 --> 10 3 --> 11 4 --> 100 5 --> 101Aquí está la solución en Javascript
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; }Veo la salida como
PS C:\VSB-PRO> node Fibo.js [ 0, NaN, NaN, NaN, NaN ]Aquí está el código de referencia que intenta convertir y que se escribió previamente en 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; } };Su ayuda es muy apreciada
Saludos,
Carolina
Lo que pasa es que en Java / representa la división de enteros cuando los operandos son enteros, pero en JavaScript, la división será una división de punto flotante, por lo que 1/2 == 0.5, y luego mem[0.5] será un valor indefinido.
Utilice el operador de desplazamiento de bits en su lugar para obtener el mismo comportamiento:
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));Convertir números positivos en un objeto de cadena Javascript funcionará para usted
console.log(Number(256).toString(2)); // 100000000Si su matriz contiene números positivos y negativos, entonces puede usar el operador " desplazamiento a la derecha sin signo " con el método toString nuevamente.
console.log((-256 >>> 0).toString(2)); // 11111111111111111111111100000000