《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 (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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值