Directorio de artículos
Descripción del problema
Dada una lista de enteros ordenados de 1 a n.
Primero, de izquierda a derecha, comenzando por el primer número, elimine cualquier otro número hasta el final de la lista.
En el segundo paso, entre los dígitos restantes, de derecha a izquierda, comenzando desde el penúltimo dígito, todos los demás dígitos se eliminan hasta el comienzo de la lista.
Seguimos repitiendo estos dos pasos, alternando de izquierda a derecha y de derecha a izquierda, hasta que solo quede un número.
Devuelve el último número restante en una lista de longitud n.
Informe de resolución de problemas.
Esta pregunta es similar a Leetcode 62, la clave es encontrar la relación de mapeo.
Código de implementación
class Solution {
public:
int lastRemaining(int n) {
if(n==1){
return 1;
}
return 2*(n/2+1-lastRemaining(n/2));
}
};