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