Matriz números duplicados - provar oferta de segurança

título Descrição

Todos os números em um comprimento de n na matriz está na gama de 0 a n-1. Alguns matriz digital é duplicado, mas não sei quantos números são duplicados. Não sei cada dígito é repetido várias vezes. Por favor, encontrar uma variedade de qualquer um dos números duplicados. Por exemplo, se o comprimento da matriz de entrada 7 {} 2,3,1,0,2,5,3, então a correspondente saída de os 2 primeiros dígitos de repetição.
 
Pensando: Uma vez que os intervalos numéricos estão no intervalo de 0-n-1, mais o comprimento da matriz de modo que os números de posição correspondem diretamente ao
2, como a primeira posição mais o comprimento da matriz é, em seguida, representados pela posição 2, que tenha acedido de uma vez, se o valor for maior do que 2 vezes o comprimento da descrição visitou o dobro
público  classe Solução {
     // Parâmetros:
     //     números: um array de inteiros
     //     Comprimento: o comprimento dos números de matriz
     //     duplicação: (Output) o número duplicado o número de série, tempo de gama duplicação é 1, portanto, usando duplicação [0] =? na implementação;
    //                   Aqui duplicação como Pointor em C / C ++, duplicação [0] igual a duplicação * em C / C ++
     //     这里要特别注意~返回任意重复的一个,赋值duplicação [0]
     // Valor de retorno: true se a entrada for válido, e há algumas duplicações no número da matriz
     //                      caso contrário false 
    pública booleano duplicados ( int números [], int comprimento, int [] duplicação) {
         para ( int i = 0; i <comprimento; i ++ ) {
             int = índice de números de [i]% comprimento; 
            números [índice] + = comprimento;
            se (números [índice]> = 2 * comprimento) { 
                duplicação [ 0] = índice;
                retornar  verdadeiro ; 
            } 
        } 
        Retornar   falsa ; 
    } 

}

 

Acho que você gosta

Origin www.cnblogs.com/nlw-blog/p/12459844.html
Recomendado
Clasificación