题目:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
Java实现:
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> al=new ArrayList<Integer>();
if(matrix==null)
return al;
int start=0;
int raw=matrix.length;
int colume=matrix[0].length;
while(start*2<raw&&start*2<colume)
{
int endRaw=raw-1-start;
int endColume=colume-1-start;
//从左到右打印
for(int i=start;i<=endColume;i++)
{
al.add(matrix[start][i]);
}
//从上到下打印
if(start<endRaw)
{
for(int i=start+1;i<=endRaw;i++)
{
al.add(matrix[i][endColume]);
}
}
//从右到左打印
if(start<endColume&&start<endRaw)
{
for(int i=endColume-1;i>=start;i--)
{
al.add(matrix[endRaw][i]);
}
}
//从下到上打印
if(start<endRaw-1&&start<endColume)
{
for(int i=endRaw-1;i>start;i--)
{
al.add(matrix[i][start]);
}
}
start++;
}
return al;
}
}