2020-04-10 11:40:30
Descripción del problema:
Los n números 0,1 ,, n-1 están dispuestos en un círculo, comenzando con el número 0 y eliminando el número enésimo de este círculo cada vez. Encuentra el último número que queda en este círculo.
Por ejemplo, los 5 dígitos 0, 1, 2, 3 y 4 forman un círculo, y el tercer dígito se elimina cada vez del dígito 0, luego los primeros 4 dígitos eliminados son 2, 0, 4, 1, y así sucesivamente. El número restante es 3.
Ejemplo 1:
Entrada: n = 5, m = 3 Salida: 3
Ejemplo 2
Entrada: n = 10, m = 17 Salida: 2
Restricciones:
1 <= n <= 10^5
1 <= m <= 10^6
Resolución de problemas:
Utilice una solución recursiva para resolver en O (n) la complejidad del tiempo.
Complejidad del tiempo: O (n)
public int lastRemaining (int n, int m) { if (n == 1) devuelve 0; return (lastRemaining (n - 1, m) + m)% n; }