时间 2018-10-13
环境:牛客的编译环境
语言:JavaScript
☕️难点:实现顺时针..真的想了好久没想出来
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.
思路:当我们拿到一个矩阵的时候,把第一行存到输出结果里,第一行遍历过之后,将矩阵逆时针旋转90°,然后再把第一行存到输出结果中,遍历之后再旋转...
代码:
function turn(arr){
var newArr = [],
row = arr.length;
if(arr.length > 0)
var col = arr[0].length;
for(var i = col - 1; i >= 0; i--){
var rowarr = [];
for(var j = 0; j < row; j++){
rowarr.push(arr[j][i]);
}
newArr.push(rowarr);
}
return newArr;
}
function printMatrix(matrix)
{
// write code here
var arr = [];
while(matrix.length != 0){
var col = matrix[0].length,
tmp = [];
for(var i = 0; i < col; i++){
tmp.push(matrix[0].pop());
}
matrix.splice(0,1);
arr = arr.concat(tmp.reverse());
matrix = turn(matrix);
}
return arr;
}