Sto lottando con un compito piuttosto semplice che ha una matrice di numeri interi non negativi in cui ho bisogno di restituire la distanza più vicina.Ottieni la distanza di elementi all'interno di un array?
Array: arr = [8, 24, 3, 20, 1, 17]
Soluzione: 2
, arr[2]-arr[4]
Sor lontano, sono riuscito solo a dare una soluzione di O (n^2), che ovviamente non è abbastanza buono:
def smallest_distance(a)
result = nil
a.each_with_index do |item1, index1|
a.each_with_index do |item2, index2|
next if index1 == index2
temp = (item1 - item2) >= 0 ? item1 - item2 : item2 - item1
result = temp if result.nil? || temp < result
end
end
result
end
Qualche idea su come migliorare questo?
Potrebbe controllare la mia domanda aggiornato? NlogN va bene. – Cojones
@Cojones Sembra corretto per me, ma non ho molta familiarità con la sintassi ruby. L'algoritmo sembra corretto, non ho idea se mi mancano alcuni problemi specifici di ruby o no. – amit
@Cojones Inoltre, se la tua domanda aggiornata proviene dalla mia risposta, dovresti scrivere meglio anche nelle risposte, così le persone capiranno il contesto della risposta (che è arrivata prima della modifica della domanda, e la modifica era basata su esso). – amit