Heim  >  Artikel  >  Web-Frontend  >  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

王林
王林nach vorne
2023-09-21 17:37:171292Durchsuche

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]
];

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

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

arr[2][3]

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));

Ausgabe

Die Ausgabe in der Konsole ist -

3

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:DHTML-JavaScriptNächster Artikel:DHTML-JavaScript