既然从外向内打印矩阵,肯定需要边界值,所以四个边界值l,r,t,b,每次不满足 l < r,t < b,退出循环即可。
代码实现
classSolution{publicint[]spiralOrder(int[][] matrix){if(matrix.length ==0)returnnewint[0];int l =0, r = matrix[0].length -1, t =0, b = matrix.length -1, x =0;int[] res =newint[(r +1)*(b +1)];while(true){for(int i = l; i <= r; i++) res[x++]= matrix[t][i];// left to right.//不满足则退出。,因为矩阵内元素已经遍历完毕了。if(++t > b)break;for(int i = t; i <= b; i++) res[x++]= matrix[i][r];// top to bottom.if(l >--r)break;for(int i = r; i >= l; i--) res[x++]= matrix[b][i];// right to left.if(t >--b)break;for(int i = b; i >= t; i--) res[x++]= matrix[i][l];// bottom to top.if(++l > r)break;}return res;}}