Dieser Algorithmus verwendet O (1) -Raum. Hier sind die Schritte:
Finden Sie eine erste Zeile mit allen 1 Werten. Wenn es keine solche Zeile gibt, enthalten alle Zeilen mindestens eine 0, also sollte jede Matrix eine 0 sein. Behalten Sie den Index der Zeile in Variable I.
Verwenden Sie I-ten Zeile als Flag, um Wert für jede Spalte, d. H. &
ganze Spalte und Speichern in I-ten Zeile.
&
jede Zeile außer I-te und Wert auf die Elemente dieser bestimmten Zeile setzen, dh 1 Zeile nehmen wenn mindestens eine 0 ganze Reihe auf 0 gesetzt ist sonst Zeile mit allen 1en verlassen, zweite Reihe nehmen usw. außer ich die Reihe.
&
I-te Zeile zu allen anderen Zeilen, d. H. A[i][j] &= A[I][j]
für alle i <> I
und j=0,1,...,A[I].length-1
.
Das ist alles !!!
Als Beispiel haben wir
1 1 1 0 1 0
1 1 1 1 1 1
1 0 1 1 1 1
1 1 1 1 1 1
0 1 1 1 1 0
Nach ersten Schritt werden wir I = 1 die zweite Reihe finden.
Dann nur 2. Reihe ändern wir die Matrix nach dem zweiten Schritt wurde (es geändert 1., 2., 4. und letzten Elemente auf 0, weil dadurch, dass Spalten 0s gefunden):
1 1 1 0 1 0
0 0 1 0 1 0
1 0 1 1 1 1
1 1 1 1 1 1
0 1 1 1 1 0
nach Schritt 3 Matrix wurde (wir werden 0s zu den Reihen gesetzt, die mindestens eine 0 excep 2. Reihe hat):
0 0 0 0 0 0
0 0 1 0 1 0
0 0 0 0 0 0
1 1 1 1 1 1
0 0 0 0 0 0
Nach Schritt 4 Matrix wurde folgende (wir &
Operationen durch alle Spalten tun):
0 0 0 0 0 0
0 0 1 0 1 0
0 0 0 0 0 0
0 0 1 0 1 0
0 0 0 0 0 0
Das ist die Matrix die wir suchen.