Ehi, ho avuto questa domanda in un'intervista e mi chiedevo quale fosse il modo migliore per risolverlo. Quindi dì che ti viene data una matrice che è già ordinata e vuoi trovare l'indice più basso di qualche valore x.trova l'indice più basso di un dato valore in una matrice preselezionata
Ecco un python/pseudocodice di ciò che mi è venuto in mente, mi chiedo solo se c'è un modo migliore per farlo?
def findLowestIndex(arr, x):
index = binarySearch(0, len(arr), x)
if index != -1:
while index > 0:
if arr[index] == arr[index-1]:
index -= 1
else:
break
return index
Grazie!
Suppongo che ti abbiano chiesto di non usare '[1,2,3] .index (2)'? Altrimenti, qualsiasi metodo sembra eccessivo. –
Beh, avevo un paio di lingue diverse in cui avrei potuto scriverlo, quindi volevo qualcosa di specifico per Python. Immagino che la funzione array.index (x) sia altamente ottimizzata, ma che la funzione non può fare alcuna ipotesi sullo stato dell'array (so che è già stato ordinato), quindi una ricerca binaria sarebbe più efficace? – mike
controlla la prima risposta a [questa domanda SO] (http://stackoverflow.com/questions/212358/binary-search-in-python) –