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

来源:互联网 发布:豆人网络战争前线 编辑:程序博客网 时间:2024/06/05 12:39

题目描述

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 (x<n-cycle&&(count!=(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;    }}
阅读全文
0 0
原创粉丝点击