Ofrecer para probar la seguridad de cuarenta y seis: círculo el número restante

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;
    }
}
     
Publicado 68 artículos originales · ganado elogios 39 · vistas 5019

Supongo que te gusta

Origin blog.csdn.net/weixin_44015043/article/details/105393032
Recomendado
Clasificación