1. La realización de binarios criterios de búsqueda
Complejidad de tiempo: O (logN)
público int binarySearch ( int [] nums, int objetivo) { int izquierda = 0 , derecha = nums.length - 1 ; mientras que (izquierda <= derecha) { int mediados = (derecha - izquierda); si (nums [MID] == objetivo) { retorno nums [MID]; } Demás si (nums [MID] < objetivo) { izquierda = centro + 1 ; } Demás { derecha = centro -1 ; } // ausencia de retorno - 1 ; } }
2. Los requisitos que prescriben
Lograr int función sqrt (int x).
Calcula y devuelve la raíz cuadrada de x, donde x es un número entero no negativo.
Dado que el tipo de retorno es un entero, la parte entera del resultado para retener sólo la parte fraccional se redondea hacia abajo.
Ejemplo 1:
Entrada: 4
de salida: 2
Ejemplo 2:
Entrada: 8
de salida: 2
Descripción: 8 es la raíz cuadrada de 2,82842 ...,
ya que el tipo de retorno es un entero, la parte fraccionaria es abajo redondeado.
clase Solution { público int mySqrt ( int x) { si (x <= 1 ) de retorno x; int l = 1 , h = x; mientras que (l <= h) { int m = (h - l) / 2 + l; int num = x / m; si (m == num) { retorno m; } Demás si (m < num) { l = m + 1 ; } Más { h = m - 1 ; } } Volver h ; } }
3. Dada una letra minúscula sólo contiene una disposición ordenada de letras y un objetivo letra deseada, se encuentran una serie ordenada que es más grande que la letra del alfabeto del objetivo mínimo.
En comparación, la letra array está circulando ordenó. Por ejemplo:
Si el objetivo carta target = 'z' y matriz ordenada de letras = [ 'a', ' b'], devuelve la respuesta 'a'.
Si el objetivo carta target = 'n' y una matriz ordenada de letras = [ 'm', ' z', 'c', 'f', 'j'], devuelve la respuesta 'z'.
Ejemplo:
Escriba las:
letras = [ "c", "F", "j"]
target = "a"
输出: "c"
Escriba las:
letras = [ "c", "F", "j"]
target = "C"
输出: "F"
Solución clase { public char nextGreatestLetter (char [] letras, objetivo char) { int l = 0, h = letters.length; mientras que (l <h) { int m = (h -l) / 2 + l; de char c = letras [m]; si (c> target) { h = m; } else { l = m + 1; } } Retorno l == letters.length? letras [0]: letras [l]; } }
4. La posición de inicio de destino en la matriz
Nums Dado una matriz de enteros dispuestas en orden ascendente, de acuerdo con el objetivo y un valor objetivo. Identificar un comienzo objetivo determinado y terminar las posiciones de la matriz.
Su complejidad temporal del algoritmo debe ser O (log n) nivel.
Si el objetivo no está presente en la matriz, de retorno [-1, -1].
Ejemplo 1:
De entrada: nums = [5,7,7,8,8,10], target = 8
de salida: [3,4]
Ejemplo 2:
De entrada: nums = [5,7,7,8,8,10], target = 6
de salida: [-1, -1]
Diferentes puntos: 1, diferentes de la cesión del derecho h frontera, dos condiciones de los ciclos diferentes (Condición 1 causa), 3, y devuelve el valor (condición 2 no es el caso ya que la detección de bordes de plomo aproximadamente igual, y por lo tanto tiene que ser determinada.)
público int [] searchRange ( int [] nums, int objetivo) { int l1 = GetFirst (nums, blanco); int l2 = GetFirst (nums, objetivo + 1 ); si (! == L1 nums.length || nums [L1] = objetivo) { volver nueva int [] {- 1 , - 1 }; } Devolver nueva int [] {L1, L2 - 1 }; } Privada int GetFirst ( int [] nums, int t) { int= L 0 , R & lt = nums.length; el tiempo (L < R & lt) { int MID = (R & lt - L) / 2 + L; int num = los nums [MID]; IF (NUM> = T) { R & lt = MID; } else { L = MID + 1. ; } } // necesidad de verificar la presencia o ausencia encontraron retorno L; }