54.Spiral Matrix
Given an m x n matrix, return all elements of the matrix in spiral order.
Example 1
Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]
Output: [1,2,3,6,9,8,7,4,5]Example 2
Input: matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
Output: [1,2,3,4,8,12,11,10,9,5,6,7]Constraints
m == matrix.lengthn == matrix[i].length1 <= m, n <= 10-100 <= matrix[i][j] <= 100
Solution
/**
* @param {number[][]} matrix
* @return {number[]}
*/
var spiralOrder = function (matrix) {
const result = [];
let rowStart = 0;
let rowEnd = matrix.length - 1;
let colStart = 0;
let colEnd = matrix[0].length - 1;
while (rowStart <= rowEnd && colStart <= colEnd) {
for (let col = colStart; col <= colEnd; col++) {
result.push(matrix[rowStart][col]);
}
rowStart++;
for (let row = rowStart; row <= rowEnd; row++) {
result.push(matrix[row][colEnd]);
}
colEnd--;
if (rowStart <= rowEnd) {
for (let col = colEnd; col >= colStart; col--) {
result.push(matrix[rowEnd][col]);
}
}
rowEnd--;
if (colStart <= colEnd) {
for (let row = rowEnd; row >= rowStart; row--) {
result.push(matrix[row][colStart]);
}
}
colStart++;
}
return result;
};Last updated on