【剑指offer】面试题29:顺时针打印矩阵(Java)
輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數(shù)字。
?
示例 1:
輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
輸出:[1,2,3,6,9,8,7,4,5]
示例 2:
輸入:matrix =?[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
輸出:[1,2,3,4,8,12,11,10,9,5,6,7]
?
限制:
0 <= matrix.length <= 100
0 <= matrix[i].length?<= 100
代碼:
class?Solution?{
????public?int[]?spiralOrder(int[][]?matrix)?{
???????
????????int?m?=?matrix.length;
????????if(m==0)
????????{
????????????int?nums[]?=?new?int[m];
????????????return?nums;
????????}
????????int?n?=?matrix[0].length;
????????int?nums[]?=?new?int[m*n];
?????????if(matrix.length==0)
????????{
????????????return?nums;
????????}
????????
????????int?k?=0,count=0;
????????while(count<m*n)
????????{
????????????for(int?i=k;i<matrix[0].length-k;i++)
????????????{
????????????????nums[count++]=matrix[k][i];
????????????}
????????????if(count==m*n)?break;
????????????for(int?i=k+1;i<matrix.length-k;i++)
????????????{
????????????????nums[count++]?=?matrix[i][matrix[0].length-k-1];
????????????}
????????????if(count==m*n)?break;
????????????for(int?i=matrix[0].length-k-2;i>=k;i--)
????????????{
????????????????nums[count++]?=?matrix[matrix.length-1-k][i];
????????????}
????????????if(count==m*n)?break;
????????????for(int?i=matrix.length-2-k;i>k;i--)
????????????{
????????????????nums[count++]?=?matrix[i][k];
????????????}
????????????if(count==m*n)?break;
????????????k++;
????????}
????????return?nums;
????}
}
總結(jié)
以上是生活随笔為你收集整理的【剑指offer】面试题29:顺时针打印矩阵(Java)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 海明码构造及纠错
- 下一篇: java美元兑换,(Java实现) 美元