#36868 Acabo de probar con el ejemplo que peta de leetcode en Intellij y da el mismo resultado que leetcode (que está mal):
[9]
[1,9,9,9,9,9,9,9,9,9]
Resultado: 8, 0, 4, 5, 6, 0, 0, 1, 4, 1
Si usas long en vez de integers falla con otro input más grande
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
[5,6,4]
JS es maravilloso, retomo un proyecto que hace un par de meses estaba apenas sin vulnerabilidades, hoy...
found 16138 vulnerabilities (1 moderate, 16137 high) in 873140 scanned packages
Subo mi movida, hay un bug, lo arreglo, me hago pull esta mañana y veo que se lo han machacado y han metido php en un script de js para manejar ese mismo bug que estaba manejando yo con js y que estaba arreglado.
POG QUE.
#36873s4suk3:in 873140 scanned packages
Pero como habeis hecho el projecto? Npm install hasta para cagar?
Este se os ocurre como resolverlo?
https://leetcode.com/problems/reverse-integer/description/
El problema es que trabajas con int cuyo MAX_VALUE es 2147483647 y uno de los test es 1534236469 y ya os podéis imaginar lo que pasa al darle la vuelta.
He probado a cambiar el return del método a long pero Leetcode no acepta mi trampa.
PD: Pongo mi solución
#36882 Asi sin comerme mucho la cabeza:
/**
* @param Integer $x
* @return Integer
*/
function reverse(int $x): int
{
$reversed = $x < 0
? (int)implode(array_reverse(str_split($x * -1))) * -1
: (int)implode(array_reverse(str_split($x)));
return filter_var(
$reversed,
FILTER_VALIDATE_INT,
[
"options" => [
"min_range" => -2 ** 31,
"max_range" => 2 ** 31
]
]) === false ? 0 : $reversed;
}
Deberia haberlo dividido en dos funciones, para no marcarme una violacion del SRP, pero meh.
Reverse Integer
Runtime: 1 ms, faster than 100.00% of Java online submissions for Reverse Integer.
Memory Usage: 33.3 MB, less than 8.40% of Java online submissions for Reverse Integer.
Joder, en memoria da puto asco.
class Solution {
public int reverse(int x) {
long rev = 0;
int sign = 1;
if(x < 0) {
sign = -1;
x *= -1;
}
while(x > 0) {
rev = rev * 10 + x % 10;
x /= 10;
}
if(rev > Integer.MAX_VALUE)
return 0;
return (int) rev * sign;
}
}
alguna idea para bajar el uso de memoria?
Bien podriais dedicar ese tiempo a mejorar software libre y menos a aumentar vuestros egos artificialmente ¬¬