分析
横向纵向每次取得的长度减1,横向或纵向每次方向会调换,一次下标加1,一次减1
虽然看了别人的是回字递归。。。啊这
代码
/**
*
* @param matrix int整型二维数组
* @return int整型一维数组
*/
function spiralOrder( matrix ) {
// write code here
if (matrix.length === 0) return matrix
if (matrix.length === 1) return matrix[0]
let m = matrix.length - 1
let n = matrix[0].length
let ans = []
let currenti = 0, currentj = -1
let arrow = true
while(m > 0 || n > 0){
for (let i = 0; i < n; i ++){
if (arrow) currentj += 1
else currentj -= 1
ans.push(matrix[currenti][currentj])
}
-- n
for (let j = 0; j < m; j++){
if (arrow) currenti += 1
else currenti -= 1
ans.push(matrix[currenti][currentj])
}
-- m
arrow = !arrow
}
return ans.slice(0,matrix.flat().length)
}