顺时针打印矩阵
题目描述:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
例如,如果输入如下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 printMatrix(matrix)
{
// write code here
//input
// 1 2 3 4
// 5 6 7 8
// 9 10 11 12
// 13 14 15 16
//output
// 1 2 3 4
// 8 12 16 15
// 14 13 9 5
// 6 7 11 10
var rows = matrix.length; //行数 4
var cols = matrix[0].length; //列数 4
var result = [];
if(rows==0 && cols==0)
return result;
var left = 0; //0 3 0 3
var right = cols-1;
var top = 0;
var bottom = rows-1;
while(left<=right && top<=bottom){
for(let i=left;i<=right;i++){
result.push(matrix[top][i]);//1 2 3 4
}
for(let i=top+1;i<=bottom;i++){
result.push(matrix[i][right]);//8 12 16
}
if(top != bottom){
for(let i=right-1;i>=left;i--)
result.push(matrix[bottom][i]);//15 14 13
}
if(left != right){
for(let i=bottom-1;i>=top+1;i--){
result.push(matrix[i][left]);//9 5
}
}
left += 1;
right -= 1;
top += 1;
bottom -= 1;
}
return result;
}
总结:
矩阵这里,考察的是对于循环临界值的判断,在符合条件的情况下进行值的打印