knifflige Liste Problem

8

Gegeben drei Listen: A, B und C der Länge n jeder. Wenn drei 3 Zahlen (1 aus jeder Liste), summieren sich bis Null zurück wahr. Ich möchte dies mit o (n) Komplexität zu lösen. Ich habe die Listen sortiert und ich kann eine Hash-Karte mit der Summe von 2 erstellen verknüpfte Listen oder 3 Listen miteinander vergleichen [o (n * n * n)] .Schlage einige Wege vor, die Methoden zu improvisieren, um die Komplexität zu reduzieren..Ich kann mir keine vorstellen ... Danke in adv

    
garima 21.03.2011, 12:01
quelle

3 Antworten

5

Ich denke nicht, dass es in o(n²) (dh wirklich besser als ) möglich ist, aber es kann in O(n²) (dh wie ) als getan werden folgt:

Als erstes reverse list B , um B' zu erhalten (dauert O(n) time), eine Liste, deren Einträge in absteigender Reihenfolge sortiert sind. Zuerst betrachten wir das Problem, zwei Elemente in den Listen A und B' zu finden, die zu einer gegebenen Zahl summieren:

Wir können das folgendermaßen machen (Python-Code):

%Vor%

Laufzeit des oben genannten ist O(n) . Zusätzlicher Platzbedarf ist O(1) , da wir nur zwei Zeiger speichern müssen. Beachten Sie, dass das Obige leicht transformiert werden kann, so dass es mit doppelt verknüpften Listen funktioniert.

Dann müssen wir insgesamt nur Folgendes tun:

%Vor%

Daraus ergibt sich die Laufzeit O(n²) und zusätzlicher Speicherplatz O(1) .

    
phimuemue 21.03.2011, 13:35
quelle
7

Die Listen sind sortiert, oder? Erstellen Sie ein sortiertes Array C ' aus C in O ( n ) Zeit.

Für jedes der n ² Paare x , y in A × B , überprüfe ob - ( x + y ) in C ' mit binärer Suche ist. Die gesamte Zeitkomplexität ist O ( n ² lg n ), die Raumkomplexität ist O ( n ).

Durch das Erstellen einer Hash-Tabelle aus C wird die Zeitkomplexität weiter auf O ( n ²) reduziert, und zwar auf Kosten von O (1) Hash-Tabellen.

    
Fred Foo 21.03.2011 12:58
quelle
0

Sie können dies nicht mit O (n) -Komplexität machen, da es ein NP-vollständiges Problem ist (außer P = NP). Sehen Sie sich die Wiki-Seite zum Subset-Sum-Problem für mögliche Lösungen an.

    
marines 21.03.2011 12:11
quelle