Also muss ich eine Funktion in Python schreiben, die eine sortierte Liste und eine ganze Zahl nimmt und prüft, ob die Summe irgendeines Paares von Elementen in der Liste gleich der Ganzzahl ist. Es muss auch in linearer Zeit (oder O (n) -Zeit) laufen. Ich habe die Funktion, die Aufgabe zu vervollständigen, aber sie läuft in quadratischer Zeit. Hier ist meine Funktion:Wie man eine Funktion nimmt, die überprüft, ob ein Paar Elemente zusammen eine andere Ganzzahl bildet und es in linearer Zeit laufen lässt?
def sum_to_int(l, k):
Lst=sorted(l)
for i in range(len(Lst)):
for n in Lst[i:]:
print(Lst[i]+n==k)
def main():
l=[1, 2, 3, 4, 5, 6]
k=10
sum_to_int(l, k)
if __name__=="__main__":
main()
Ich bin ziemlich sicher, dass, um diesen Lauf in linearer Zeit zu machen, ich die zweiten for-Schleife zu entfernen, aber ich bin mir nicht sicher, wie ich durch die Liste gehen kann, ohne die zweite Schleife. Gibt es auf jeden Fall kann ich diese Funktion vereinfachen & es in linearer Zeit laufen lassen? Jede Hilfe würde sehr geschätzt werden. Danke fürs Lesen.