Los siguientes son algunos métodos para introducir el número de números de matriz de Java. El contenido específico es el siguiente:
Método 1:
La clasificación de la matriz, y luego el valor intermedio es definitivamente el valor que se encuentra. Ordene la complejidad de tiempo mínimo (clasificación rápida) O (NLOGN), más el recorrido.
Método 2:
Usando un método de tabla hash, es decir, contando el número de ocurrencias de cada matriz y números de salida cuyas ocurrencias son mayores que la longitud de la matriz.
Método 3:
El número de ocurrencias excede la mitad de la longitud de la matriz, lo que indica que este número aparece más veces que la suma de otros números.
Considere eliminar dos números diferentes cada vez, el número de ocurrencias en los números restantes aún excede el número total. Repita el proceso constantemente, excluya otros números y finalmente encuentre el número con más de la mitad de los ocurrencias. La complejidad del tiempo de este método es O (N) y la complejidad del espacio es O (1).
Para cambiar la idea, esto se puede lograr mediante el conteo, en lugar de la eliminación física real. Durante el proceso de atravesar la matriz, guarde dos valores, uno es el número en la matriz y el otro es el número de ocurrencias. Cuando atraviesa el siguiente número, si este número es el mismo que el número guardado previamente, el número de veces aumenta en 1, y si es diferente, el número de veces disminuye en 1. Si el número de veces es 0, guarda el número siguiente y establece el número en 1. Dado que el número que buscamos aparece más que la suma de todos los demás números, el número que buscamos debe ser el número de correspondencia cuando el número de tiempo último es el tiempo que se establece en el tiempo.
public int MoreHalf (int [] nums) {int result = 0; int count = 1; if (nums.length == 0) return -1; resultado = nums [0]; for (int i = 1; i <nums.length; i ++) {if (count == 0) {result = nums [i]; count = 1; continuar;} if (result == nums [i) Count++; ElsEd resultado;}Método 4:
La clasificación mejorada de la fila rápida, mencionada anteriormente, si se ordena una matriz, el número en la posición media debe ser el valor que desee. La complejidad del tiempo de la clasificación de matrices es O (nlog (n)), pero para esta pregunta, hay mejores algoritmos que se pueden encontrar dentro de la complejidad del tiempo o (n).
Derivando del algoritmo de clasificación rápida, el método Partition () es el método más importante. Este método devuelve un índice, que puede garantizar que el número en la posición del índice esté ordenado. El número a la izquierda del índice es menor que el número donde se encuentra el índice, y el número a la derecha del índice es mayor que el número donde se encuentra el índice. Entonces esta pregunta se puede resolver utilizando esta idea.
Índice de retorno a través de Partition (). Si índice == Mid, significa que se ha encontrado la mediana de la matriz; Si indexMid, significa que la mediana está entre [inicio, index-1]. Sé que se obtiene el final del Índice == Medio bucle.
public int Partition (int [] nums, int inicio, int end) {int pivotkey = nums [inicio]; int origin = start; while (start <end) {while (start <end && nums [end]> = pivotkey) end-; while (start <end <end && nums [start] <pivotkey) start ++; swap (nums, inicio);} intercambio (nums, inicio, final); swap (nums, origen, end); return end;} p int [] swap (int [] ints, int x, int y) {int temp = ints [x]; ints [x] = ints [y]; ints [y] = temp; devolver ints; } public int Morethanhalf (int [] nums) {if (nums.length == 0) return -1; int inicio = 0; int end = nums.length-1; int index = particion (nums, inicio, end); int mid = nums.length/2; while (index! = Mid) {if (index> mid) // el índice obtenido después de ajustar el arbitra es mayor que el medio, continúe a la mediana, continúe con el Índice de Artilia al Armado de START-1 A STINGA A LA Partition (NUMS, Start, Index-1); else {// Ajuste el índice de matriz del índice+1 para finalEl contenido anterior presenta el contenido relevante del código Java que implementa números que aparecen más de la mitad de las veces en una matriz. ¡Espero que sea útil para todos!