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