题目: 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
我的JavaScript 解法
/**
* @param {number[][]} matrix
* @return {number[]}
*/
var spiralOrder = function(matrix) {
const rowLen = matrix.length;
const colLen = matrix[0].length;
let upperBound = 0, lowerBound = rowLen -1, leftBound = 0, rightBound = colLen -1;
let result = [];
while(result.length < rowLen * colLen) {
if(upperBound <=lowerBound) {
for(let i = leftBound; i <= rightBound; i++) {
result.push(matrix[upperBound][i]);
}
upperBound++;
}
if(leftBound <=rightBound) {
for(let i = upperBound; i <= lowerBound; i++) {
result.push(matrix[i][rightBound]);
}
rightBound--;
}
if(upperBound <=lowerBound) {
for(let i = rightBound; i >= leftBound; i--) {
result.push(matrix[lowerBound][i]);
}
lowerBound--;
}
if(leftBound <=rightBound) {
for(let i = lowerBound; i >= upperBound; i--) {
result.push(matrix[i][leftBound]);
}
leftBound++;
}
}
return result;
};
解析: 二维数组的花样遍历,定义四个边界,遍历
- 时间复杂度:
- 空间复杂度: