您的位置:首页 > 职场人生

面试题40:顺时针打印矩阵

2015-05-08 09:33 120 查看
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每个数字,例如:如果输入一下矩阵:

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

绘制图形有利于帮助解题

源代码:

static void PrintMatrixClockwisely(int[][] numbers, int colums, int rows)

{

if(numbers == null || colums <= 0 || rows <= 0)

{

return;

}

int start = 0;

//如何判断循环结束,是一个关键点

while((colums > start * 2) && (rows > start * 2))

{

printMatricInCircle(numbers, colums, rows, start);

++start;

}

}

static void printMatricInCircle(int[][] numbers, int colums, int rows, int start)

{

int endX = colums - start - 1;

int endY = rows - start - 1;

//从左向右打印一行

for(int i = start; i <= endX; i++)

System.out.print(numbers[start][i] + " ");

//从上到下打印一列

if(start < endY)

{

for(int j = start + 1; j <= endY; j++)

System.out.print(numbers[j][endX] + " ");

}

//从右往左打印一行

if(start < endY && start < endX)

{

for(int k = endX - 1; k >= start; k--)

System.out.print(numbers[endY][k] + " ");

}

//从下向上打印一列

if(start < endX && start < endY - 1)

{

for(int m = endY -1; m > start; m--)

System.out.print(numbers[m][start] + " ");

}

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