题目
题目概述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
限制:
0 <= matrix.length <= 100
0 <= matrix[i].length <= 100
示例
基础框架
class Solution { public int[] spiralOrder(int[][] matrix) { } }
解题思路
顺时针打印也就是"从左向右、从上向下、从右向左、从下向上"遍历循环即可
class Solution { public int[] spiralOrder(int[][] matrix) { if(matrix.length==0) { return new int[0]; } int left=0,top=0; int right=matrix[0].length-1; int bottom=matrix.length-1; int[] res=new int[(right+1)*(bottom+1)]; int k=0; //循环打印 while(left<=right&&top<=bottom){ //从左到右 for(int i=left;i<=right;i++){ res[k++]=matrix[top][i]; } top++; //从上到下 for(int i=top;i<=bottom;i++){ res[k++]=matrix[i][right]; } right--; //从右到左 for(int i=right;i>=left&&top<=bottom;i--){ res[k++]=matrix[bottom][i]; } bottom--; //从下到上 for(int i=bottom;i>=top&&left<=right;i--){ res[k++]=matrix[i][left]; } left++; } return res; } }