trabajo informal
día de los niños cada año, vaca-off prepararán algunos pequeños regalos para visitar a los niños del orfanato, este año también es cierto. Como un veterano de HF ganado, naturalmente, hemos preparado algunos juegos. Entre ellos, hay un juego de la siguiente manera: En primer lugar, que los niños rodeadas por un círculo grande. A continuación, asigna aleatoriamente un número m, de manera que el número de niños 0 Número poniendo. Llorado cada vez m-1 los niños cantan una canción a estar fuera de la línea, entonces cualquiera de las cajas de regalo en la elección de un regalo, y no regresar al círculo, empezando por su próximo hijo, continúe 0 ... m-1 contando ... continuar ... hasta que el último hijo restante, no se puede llevar a cabo, y obtener el ganado fuera del "Detective Conan" rara edición del colector (plazas limitadas oh! _ ). ¿Quieres probar siguiente, que los hijos recibirán los regalos que? (NOTA: El número de niños es de 0 a n-1)
si no hay niños, retorno -1
pensamiento
En una circulación círculo, un proceso para añadir un valor inicial igual a un valor dado, que se establece en -1, el salto siguiente ciclo de tiempo, menos un valor dentro del proceso de círculo, el ciclo ha sido la de devolver el último valor.
código
public class Solution {
public int LastRemaining_Solution(int n, int m) {
int [] num=new int [n];
int i=-1;
int count=n;int p=-1;
while(count>0){
i++;
if(i>=n) i=0;
if(num[i]==-1)continue;
p++;
if(p==m-1){
num[i]=-1;
p=-1;
count--;
}
}
return i;
}
}