Heim > Web-Frontend > js-Tutorial > Finden Sie die längste Zeile aufeinanderfolgender Einsen in einer Matrix in JavaScript

Finden Sie die längste Zeile aufeinanderfolgender Einsen in einer Matrix in JavaScript

王林
Freigeben: 2023-09-21 17:37:17
nach vorne
1364 Leute haben es durchsucht

Finden Sie die längste Zeile aufeinanderfolgender Einsen in einer Matrix in JavaScript

Angenommen, wir haben eine binäre Matrix (ein Array, das nur Arrays von 0 oder 1 enthält), wie unten gezeigt –

const arr = [
   [0,1,1,0],
   [0,1,1,0],
   [0,0,0,1]
];
Nach dem Login kopieren

Wir müssen eine JavaScript-Funktion schreiben, die eine Matrix wie diese als ersten und einzigen Parameter akzeptiert.

Die Aufgabe unserer Funktion besteht darin, die längste Reihe aufeinanderfolgender Matrizen in einer Matrix zu finden und die Anzahl der darin enthaltenen Einsen zurückzugeben. Die Linie kann horizontal, vertikal, diagonal oder antidiagonal sein.

Für das obige Array sollte die Ausgabe beispielsweise -

const output = 3
Nach dem Login kopieren

sein, da die längste Zeile bei arr[0][1] beginnt und diagonal bis -

arr[2][3]
Nach dem Login kopieren

Beispiel

Der Code lautet -

Live-Demo

const arr = [
   [0,1,1,0],
   [0,1,1,0],
   [0,0,0,1]
];
const longestLine = (arr = []) => {
   if(!arr.length){
      return 0;
   }
   let rows = arr.length, cols = arr[0].length;
   let res = 0;
   const dp = Array(rows).fill([]);
   dp.forEach((el, ind) => {
      dp[ind] = Array(cols).fill([]);
      dp[ind].forEach((undefined, subInd) => {
         dp[ind][subInd] = Array(4).fill(null);
      });
   });
   for (let i = 0; i < rows; i++) {
      for (let j = 0; j < cols; j++) {
         if (arr[i][j] == 1) {
            dp[i][j][0] = j > 0 ? dp[i][j - 1][0] + 1 : 1;
            dp[i][j][1] = i > 0 ? dp[i - 1][j][1] + 1 : 1;
            dp[i][j][2] = (i > 0 && j > 0) ? dp[i - 1][j - 1][2] + 1 : 1;
            dp[i][j][3] = (i > 0 && j < cols - 1) ? dp[i - 1][j + 1][3] + 1 : 1;
            res = Math.max(res, Math.max(dp[i][j][0], dp[i][j][1]));
            res = Math.max(res, Math.max(dp[i][j][2], dp[i][j][3]));
         };
      };
   };
   return res;
};
console.log(longestLine(arr));
Nach dem Login kopieren

Ausgabe

Die Ausgabe in der Konsole ist -

3
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonFinden Sie die längste Zeile aufeinanderfolgender Einsen in einer Matrix in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage