《leetcode》spiral-matrix-ii(构造螺旋矩阵)

题目描述

Given an integer n, generate a square matrix filled with elements from 1 to n 2 in spiral order.
For example,
Given n =3,
You should return the following matrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]

解析:螺旋矩阵算是数组中比较经典的问题了。如何构造螺旋矩阵返回呢?我们可以把该数组看成是构造上方、右方、下方、左方来构造。注意:每构造一个上、右、下、左就把循环数+1,就像剥洋葱一样,搞完一层就少一层。

public class Solution {
    public int[][] generateMatrix(int n) {
        int [][] arr = new int[n][n];
        int count=0;//构造的数
        int x=0;
        int y=0;
        int num=1;
        int cycle=0;//控制循环的层数

        while (count!=(n*n)){
            while (y<(n-cycle)&&(count!=(n*n))){//上方
                arr[x][y]=num++;
                y++;
                count++;
            }
            y--;
            x++;
            while (xcount!=(n*n))){//右方
                arr[x][y]=num++;
                x++;
                count++;
            }
            x--;
            y--;
            while (y>=cycle&&(count!=(n*n))){//下方
                arr[x][y]=num++;
                y--;
                count++;
            }
            y++;
            x--;
            while (x>cycle&&(count!=(n*n))){//左侧
                arr[x][y]=num++;
                x--;
                count++;
            }
            x++;
            y++;
            cycle++;//完成一圈循环数+1,下次内圈变小
        }
        return arr;
    }
}

你可能感兴趣的:(笔试编程)