Finden der Zahl, die einem gegebenen Wert in einer Liste von Ganzzahlen am nächsten kommt
Angenommen, wir haben eine Liste von Ganzzahlen und möchten bestimmen, welche Zahl einem gegebenen Wert am nächsten kommt. Wir können verschiedene Methoden anwenden, um dies zu erreichen.
Verwenden der Funktion min() für unsortierte Listen:
Wenn wir nicht garantieren können, dass die Liste sortiert ist, können wir die nutzen integrierte min()-Funktion. Es wählt mithilfe einer Tastenfunktion das Element mit dem minimalen Abstand von der angegebenen Zahl aus.
>>> min(myList, key=lambda x:abs(x-myNumber)) 4
Diese Methode findet effizient die nächstliegende Zahl in O(n)-Zeitkomplexität.
Verwendung der Bisektionsmethode für sortierte Listen:
Wenn die Liste bereits sortiert ist oder wir bereit sind, sie einmal zu sortieren, können wir die Bisektionsmethode verwenden. Diese Methode reduziert die Zeitkomplexität auf O(log n). Die Überprüfung, ob die Liste bereits sortiert ist, erfordert jedoch O(n) und die Sortierung selbst erfordert O(n log n).
>>> low, high = 0, len(myList) - 1 >>> while low <= high: >>> mid = (low + high) // 2 >>> if myList[mid] == myNumber: >>> return myList[mid] >>> elif myList[mid] > myNumber: >>> high = mid - 1 >>> else: >>> low = mid + 1 >>> if low > high: >>> closest = myList[high] if abs(myList[high] - myNumber) < abs(myList[low] - myNumber) else myList[low] >>> return closest
Durch Auswahl des nächstgelegenen Elements bietet diese Methode eine optimale Lösung für sortierte Listen .
Das obige ist der detaillierte Inhalt vonWie finde ich die nächstliegende Zahl in einer Liste von ganzen Zahlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!