Recentemente ho affrontato un problema di programmazione che è la seguente:Per trovare l'elemento minimo in un array che è ordinata e ruotato
un array ordinato è dato e l'array è ruotato ad un certo punto sconosciuto, devo trovare l'elemento minimo in esso. La matrice può contenere anche duplicati.
Per esempio:
Input: {5, 6, 1, 2, 3, 4}
Output: 1
Input: {2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 2}
Output: 0
I seguita soluzione semplice è quella di attraversare trogolo la gamma completa e trova minimo. Questa soluzione richiede tempo O (n). Comprendo il fatto che l'elemento minimo è quello il cui elemento precedente è maggiore di esso. Se non è presente un tale elemento, allora non c'è rotazione e il primo elemento sarebbe il minimo.
Ma mi è stata chiesta una soluzione O (Logn). C'è un modo per risolverlo in tempo O (Logn)?
ricerca binaria è la soluzione per 'O (log n)', basta aggiungere ulteriori condizioni per la rotazione. –
Puoi controllare questo link http://www.geeksforgeeks.org/find-minimum-element-in-a-sorted-and-rotated-array/ – vikiiii
Era una domanda di intervista per il mio primo lavoro fuori dal college. L'intervistatore lo ha definito "array T-ordinato", ma non so quanto sia pervasivo il termine ... –