Oggi un'intervistatore mi ha fatto questa domanda. La mia risposta immediata è stata che potevamo semplicemente fare una ricerca lineare, confrontando l'elemento corrente con l'elemento precedente nell'array. Poi mi ha chiesto come si potrebbe risolvere il problema in un tempo non lineare.In un tempo inferiore al lineare, trova il duplicato in un array ordinato
Ipotesi
- L'array è ordinato
- C'è solo uno duplicare
- La matrice è solo popolato con i numeri
[0, n]
, doven
è la lunghezza del array.
Esempio matrice: [0,1,2,3,4,5,6,7,8,8,9]
ho tentato di trovare una divide et impera algoritmo per risolvere questo problema, ma non sono sicuro che sia stata la risposta giusta. Qualcuno ha qualche idea?
l'esempio include solo numeri '[0, n-2]' (non ci sono '10' , '11') È solo un esempio o una regola generale? – jfs