Finden der Zahl in einer Liste, die einem gegebenen Wert am nächsten kommt
Anhand einer Liste mit ganzen Zahlen müssen Sie möglicherweise bestimmen, welche Zahl am nächsten kommt auf einen bestimmten Wert. Diese Aufgabe kann mit den folgenden Methoden effizient gelöst werden:
Unsortierte Liste:
Wenn die Eingabeliste unsortiert ist, können Sie die integrierte Funktion min() verwenden mit einem Schlüsselargument. Dadurch können Sie das Element mit der minimalen absoluten Differenz vom Zielwert finden.
>>> myList = [4, 1, 88, 44, 3] >>> myNumber = 5 >>> min(myList, key=lambda x: abs(x - myNumber)) 4
Diese Methode benötigt O(n) Zeit, da sie die gesamte Liste durchläuft.
Sortierte Liste:
Wenn die Liste bereits sortiert ist oder Sie bereit sind, sie einmal zu sortieren, können Sie alternativ die verwenden Halbierungsmethode. Diese Technik verwendet eine binäre Suche, um den Einfügepunkt des Zielwerts zu lokalisieren und so effektiv das nächstgelegene Element in O(log n)-Zeit zu finden. Hier ist eine Beispielimplementierung mit dem Bisect-Modul von Python:
>>> from bisect import bisect_left >>> myList = sorted([4, 1, 88, 44, 3]) >>> myNumber = 5 >>> bisect_left(myList, myNumber) 2 >>> myList[2] 4
Das obige ist der detaillierte Inhalt vonWie finde ich die Zahl in einer Liste, die einem bestimmten Wert am nächsten kommt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!