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 ; } }