Gane la oferta-001- dimensiones de búsqueda de matriz

 

tema:

(La longitud de cada matriz unidimensional de los mismos), cada fila de izquierda a derecha en el orden de ascendente en orden, para ordenar cada columna en una matriz de dos dimensiones con el fin de aumentar de arriba a abajo. Una función completa, entran en una matriz tal de dos dimensiones y un número entero, se determina si la matriz contiene el número entero.

Conocimiento:
matriz bidimensional, Encuentra

 

1 idea:

Usando las propiedades: una matriz bidimensional de izquierda a derecha, de arriba a los incrementos del valor de fondo.

1) a la derecha (o izquierda inferior) Encontrar el ángulo, la esquina superior derecha es el elemento máximo en la fila, la columna del valor mínimo.

Si el valor objetivo es inferior a los elementos de la esquina superior derecha, los elementos de borrado, donde la esquina derecha superior de la columna; si el elemento es mayor que la esquina superior derecha, (entonces objetivo ciertamente no en la esquina superior derecha del elemento donde la línea) Suprimir la esquina superior derecha de la fila, si igual retorno cierto.

condición de terminación 2) + circulantes cambios variable de bucle de tiempo en tiempo, mientras que bucle escrito.

3) la detección de una matriz de entrada de dos dimensiones es vacía, el objetivo de detección es menor que el array mínima y / o matriz es mayor que el valor máximo, puede mejorar la eficiencia del proceso.

complejidad del tiempo: O (+ fila col)

código:

público  clase Solution {
     público  boolean Find ( int objetivo, int [] [] array) {
         int fila = Array.length;
        int col = array [0 ] .length; 
        
        // verificación si matriz 2D está vacía 
        si (Array.length == 0 || array [0] .length == 0 ) {
             retorno  falsa ; 
        } 
 
        Si (objetivo <array [0] [0] || destino> array [fila - 1] [col - 1 ]) {
             retorno  falsa ; 
        } 
        // comenzar desde la esquina derecha arriba 
        intCurrow = 0 ;
        int curCol = col - 1 ;
        mientras que (Currow <fila && curCol> = 0 ) {
             si (objetivo < array [Currow] [curCol]) { 
                curCol - ; 
            } Demás  si (target> array [Currow] [curCol]) { 
                Currow ++ ; 
            } Demás {
                 devolver  cierto ; 
            } 
        } 
        Volver  falsa ; 
    } 
}

 

2 ideas:

La búsqueda binaria

Complejidad de tiempo:

O (nlogn)

matriz unidimensional de dos dimensiones tiempo de búsqueda complejidad de O (log n)

Supongo que te gusta

Origin www.cnblogs.com/zyrJessie/p/12549904.html
Recomendado
Clasificación