Java 8, 100 Bytes
m->m.indexOf(m.stream().map(z->{z.removeIf(x->x==0);return z;}).max((q,r)->q.size()-r.size()).get())
Erläuterung
Die Kraft der Listen und Streams! (Und ohne die Importe, um zu booten!)
Brechen wir dieses kleine Lambda in Stücke:
m.stream().map(z->{z.removeIf(x->x==0);return z;}
Wir wandeln unsere Liste der Listen (die Matrix in der Frage) in einen Stream um und gehen jedes Element durch, wobei wir alle diese nervigen Nullen aus jeder Unterliste entfernen. Wir müssen die Unterliste jedes Mal hier explizit zurückgeben, da Stream.map()
jedes Objekt im Stream in das konvertiert wird, was auch immer die Zuordnung zurückgibt, und wir möchten sie nicht ändern.
.max((q,r)->q.size()-r.size()).get()
Wir gehen unsere neu entnullten Unterlisten durch und überprüfen einfach, wie groß sie nebeneinander sind, um die größte Unterliste zu erhalten. Das .get()
liegt daran, dass dasStream.max()
eine Optional gibt, erfordern , dass zusätzliche Funktionsaufruf.
m.indexOf()
Wir nehmen diese größte Unterliste und finden heraus, wo sie sich in der Hauptliste befindet. So erhalten wir unser Ergebnis!
Anmerkungen
Dies bricht, wenn die äußere Liste leer ist, aber ich nehme
Sie können davon ausgehen, dass es nur eine Zeile mit den meisten Nicht-Null-Elementen gibt.
zu implizieren, dass es immer mindestens eine Zeile geben wird. Korrigiere mich, wenn ich falsch liege.
Ā
anstelle vonÄ0›
für -2.