输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
思想: 打印第一行。逆时针旋转数组后,再打印第一行。再逆时针旋转。 一直到最后。 代码如下:
function roate(arr) { //逆时针旋转m*n的数组
let a = []
let m = arr.length;
if (m==0) return null
let n = arr[0].length
for (let i = 0; i < n; i++) {
a[i]=new Array(m).fill(0)
}
for (let i = 0; i < n; i++) {
for (let j = 0;j<m;j++){
a[i][j] = arr[j][Math.abs(i-n+1)]
}
}
return a
}
function printMatrix(matrix)
{
// write code here
if(matrix.length==0) return
let res = [] //存放数字
while(matrix){
for(let i=0;i<matrix[0].length;i++ ){
res.push(matrix[0][i])
}
matrix=f(matrix.slice(1))
}
return res
}
验证:
arr = [
[4,5,6,7],
[4,5,6,7],
[4,5,6,7],
[4,5,6,7]
]
输出的是: