# 054.SpiralMatrix
// https://leetcode-cn.com/problems/spiral-matrix/
/**
* @param {number[][]} matrix
* @return {number[]}
*/
var spiralOrder = function (matrix) {
if (!matrix.length) {
return matrix;
}
var rowsLen = matrix.length;
var colsLen = matrix[0].length;
var start = 0;
var res = [];
while (rowsLen > start * 2 && colsLen > start * 2) {
res = res.concat(printCircle(matrix, start, rowsLen, colsLen));
start++;
}
return res;
};
var printCircle = function (matrix, start, rowsLen, colsLen) {
var res = [];
var endX = colsLen - start - 1;
var endY = rowsLen - start - 1;
for (var i = start; i <= endX; i++) {
res.push(matrix[start][i]);
}
if (start < endY) {
for (var i = start + 1; i <= endY; i++) {
res.push(matrix[i][endX]);
}
}
if (start < endX && start < endY) {
for (var i = endX - 1; i >= start; i--) {
res.push(matrix[endY][i]);
}
}
if (start < endX && start < endY - 1) {
for (var i = endY - 1; i > start; i--) {
res.push(matrix[i][start]);
}
}
return res;
}