Supongo que mi solución pasó todos los casos de prueba pero falló en uno.
Problema:
Se le da un entero grande representado como una matriz de dígitos enteros, donde cada dígito[i] es el i-ésimo dígito del entero. Los dígitos están ordenados de más significativos a menos significativos en orden de izquierda a derecha. El entero grande no contiene ningún cero inicial.
Incremente el entero grande en uno y devuelva la matriz de dígitos resultante.
Ejemplo 1:
Input: digits = [1,2,3] Output: [1,2,4] Explanation: The array represents the integer 123. Incrementing by one gives 123 + 1 = 124. Thus, the result should be [1,2,4].
Ejemplo 2:
Input: digits = [9] Output: [1,0] Explanation: The array represents the integer 9. Incrementing by one gives 9 + 1 = 10. Thus, the result should be [1,0].
Restricciones:
Mi solución:
var plusOne = function(digits) { let arrToStr=digits.join(''); arrToStr++; let strToArr = arrToStr.toString().split('').map((x)=>parseInt(x)); return strToArr; };
Error en estos casos de prueba:
Input: [6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,3] Output: [6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,0,0,0] Expected: [6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,4]
¿Hay algo que esté haciendo mal? ¿O es por javascript? Como he leído, javascript no es bueno para la programación competitiva porque tiene algunos inconvenientes.
El número entero en JavaScript solo puede representar hasta 9,007,199,254,740,991 ( https://stackoverflow.com/a/49218637/7588455 )
6,145,390,195,186,705,543 es mayor que eso.
Recomiendo usar BigInt
como alternativa.
Una posible solución se vería así:
https://pastebin.com/NRHNYJT9 (Oculto para no spoilearte)