题目描述:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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。
解题思路:
此题目为循环打印矩阵,而对于每一圈的打印,很自然便可以想到遵循从左到右,从上到下,从右到左,从下到上的顺序。但是这里需要注意的是最后一圈的打印,由于矩阵并不一定是方阵,最后一圈有可能退化为只有一行,只有一列,甚至只有一个数,因此要注意进行判断,避免重复打印。(如图)
代码实现
(JavaScript实现):
function printMatrix(matrix) { // write code here if (matrix == 0 || matrix.length == 0) { return matrix; } var res = []; var top = 0, left = 0, bottom = matrix.length - 1, right = matrix[0].length - 1; while (top <= bottom && left <= right) { //循环一圈 //从左上到右上 for (let i = left; i <= right; i++) { res.push(matrix[top][i]); } //从右上到右下 for (let i = top + 1; i <= bottom; i++){ res.push(matrix[i][right]); } //从右下到左下 if (bottom !== top) { for (let i = right - 1; i >= left; i--) { res.push(matrix[bottom][i]); } } //从左下到左上 if (left !== right) { for (let i = bottom - 1; i >= top + 1; i--) { res.push(matrix[i][left]); } } top++; left++; bottom--; right--; } return res; }
原文:https://www.cnblogs.com/zhangshiliu/p/14672393.html