题目
https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/
思路
按照每层打印,外层打完,进内层;先打印上侧,右侧
若:left<right&&top<bottom,说明存在下侧,左侧需要打印
code
/**
* @param {number[][]} matrix
* @return {number[]}
*/
var spiralOrder = function (matrix) {
if (matrix.length == 0) return [];
let row = matrix.length; // 行
let col = matrix[0].length; // 列
let res = [];
let left = 0, top = 0, bottom = row - 1, right = col - 1;
while (left <= right && top <= bottom) {
for (let i = left; i <= right; i++) {
res.push(matrix[top][i]);
}
for (let i = top + 1; i <= bottom; i++) {
res.push(matrix[i][right]);
}
if (left < right && top < bottom) {
for (let i = right - 1; i > left; i--) {
res.push(matrix[bottom][i]);
}
for (let i = bottom; i > top ; i--) {
res.push(matrix[i][left]);
}
}
[top, bottom, left, right] = [top + 1, bottom - 1, left + 1, right - 1];
}
return res;
};