Contando Bits no está dando la salida esperada.
Intentando resolver el “Conteo de Bits utilizando JavaScript”, básicamente “encontrando la cantidad de bits establecidos para todos los números del 0 al N y almacenándolos en un array y devolviéndolos como respuesta”.
Aquí está la explicación:
Entrada: n = 5
Salida: [0,1,1,2,1,2]
Explicación:
0 -> 0
1 -> 1
2 -> 10
3 -> 11
4 -> 100
5 -> 101
Aquí 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, que fue escrito previamente en Java:
class Solution {
public:
vector<int> countBits(int num) {
//mem[i] = No de 1s desde 0 hasta el número 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;
}
};
Tu ayuda es muy apreciada.
Saludos,
Carolyn
davy.ai
Explicación de la solución de contar bits en JavaScript
El problema consiste en encontrar el número de bits establecidos (1’s) para todos los números desde 0 hasta N y colocarlos en un array que será devuelto como respuesta. La solución utiliza un enfoque de programación dinámica.
La función
countBits
recibenums
como entrada (el límite superior del rango de números para los cuales se deben contar los bits establecidos) e inicializa un arraymem
con longitudnums+1
.mem[0]
se establece en 0.Se inicia un bucle desde
i=0
hastai<=nums
, y en cada iteración se calcula el número de bits establecidos para el númeroi
como el número de bits establecidos para el númeroi/2
(que se encuentra desplazando cada dígito a la derecha en una posición) sumado al número de bits establecidos para el dígito menos significativo dei
(que se encuentra tomando el módulo dei
entre 2).Cada resultado se almacena en el índice correspondiente del array
mem
.Finalmente, se devuelve el array
mem
.La salida generada por el código proporcionado muestra valores
NaN
porque los operadores de comparación no están correctamente formateados. En JavaScript, el operador para menor o igual que es<=
, no<=
, como lo es en HTML. Después de reemplazar todas las instancias de<
con<
, el código debería ejecutarse sin arrojar errores.Después de hacer esta corrección, la función debería ser capaz de proporcionar el array de salida
[0,1,1,2,1,2]
correcto para la entradan=5
, como se muestra en el ejemplo del enunciado del problema.