您的位置:首页 > Web前端

顺时针打印矩阵 - 牛客剑指offer

2018-08-14 00:52 141 查看

题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.

解题思路:

 

画图就会发现只需要一个外层循环,四个内循环解决;稍微有一点麻烦的是边界处理,不过画图一下就好了;

[code]import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
if(matrix==null)
return null;
int row=matrix.length;
int col=matrix[0].length;
if(col==0||row==0)
return null;
int num=((col<row?col:row)-1)/2+1;
ArrayList res=new ArrayList<Integer>();
for(int i=0;i<num;i++){
for(int j=i;j<col-i;j++)
res.add(matrix[i][j]);
for(int k=i+1;k<row-i;k++)
res.add(matrix[k][col-i-1]);
for(int j=col-i-2;j>=i&&i!=(row-i-1);j--)
res.add(matrix[row-i-1][j]);
for(int k=row-i-2;k>i&&i!=(col-i-1);k--)
res.add(matrix[k][i]);
}
return res;
}
}

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: