题目
给定一个整型矩阵matrix,请按照转圈的方式打印它。要求额外空间复杂度为O(1)。
例如:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
打印结果为1 2 3 4 5 10 15 20 19 18 17 16 11 6 7 8 9 14 13 12
思路
题意为从左上角(a,b)开始转圈打印矩阵
这道题我们只需要考虑重要的几个边界即可。首先根据左上角(a,b)和右下角(c,d)确定这个矩阵,以顶点(x,y)开始沿着打印路线开始移动打印,开始(x,y)向右移动(x++)
,当到达右边界d时向下移动(y++)
,到达下边界c时向左移动(x--)
,到达左边界b时向上移动(y++)
,以此类推
代码
/**
* 转圈打印矩阵
* 【题目】 给定一个整型矩阵matrix,请按照转圈的方式打印它。
* 例如:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
* 打印结果为:1 2 3 4 5 10 15 20 19 18 17 16 11 6 7 8 9 14 13 12
* 【要求】 额外空间复杂度为O(1)。
*
* @Author: FangJu
* @Date: 2019/8/11
*/
public class PrintMatrixSpiralOrder {
public static void main(String[] args) {
int[][] matrix = {
{
1, 2, 3, 4, 5},
{
6, 7,