Ofrecer el menor número de rotación de la matriz para demostrar la seguridad

título Descripción

El comienzo de una matriz de varios elementos se trasladó a la final de la matriz, la matriz que llamamos rotación.
Un orden no descendente de la matriz de entrada de una rotación de la rotativa array elemento más pequeño de salida.
Por ejemplo, una matriz {3,4,5,1,2} {1,2,3,4,5} es una rotación de la matriz a un mínimo.
NOTA: Todos los elementos se dan en mayor que 0, si el tamaño de la matriz es 0, retorno 0.

pensamiento

Utiliza una búsqueda binaria
considerar tres casos:

  • array [MID] <array [r], a la izquierda en este caso un cierto número mínimo de mediados
  • array [MID] = array [r], el número mínimo de no aparece en este momento a la izquierda o la derecha. Por lo tanto, uno por uno para encontrar, por ejemplo, [1,0,1,1,1]
  • array [mediados]> array [r], en este caso un cierto número mínimo de mediados derecha

Código de referencia

import java.util.ArrayList;
public class Solution {
    public int minNumberInRotateArray(int [] array) {
        int l = 0;
        int r = array.length - 1;
        while (l <= r) {
            int mid = l + (r - l) / 2; 
            if (array[mid] < array[r]) {
                r = mid;  
            } else if (array[mid] == array[r]) {
                r -= 1;
            } else {
                l = mid + 1;
            }
        }
        return array[l];
    }
}
Publicado siete artículos originales · ganado elogios 0 · Vistas 1352

Supongo que te gusta

Origin blog.csdn.net/Incanus_/article/details/105242784
Recomendado
Clasificación