Leetcode #59. Spiral Matrix ii 螺旋遍历2 解题报告

本文介绍了一种螺旋矩阵填充算法的实现方法,该算法要求以螺旋形式填充一个n×n的矩阵,从1到n²。文章通过对比LeetCode第54题螺旋遍历矩阵的解题思路,阐述了如何修改代码以实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 解题思想

首先大家可以看下这个系列的第一题:
Leetcode #54. Spiral Matrix 螺旋遍历 解题报告

在54当中,是要求大家以螺旋的方式遍历数组,而这道题是要求你以螺旋的方式将数组填入1.2.3..n^2,填入的数字就是遍历的顺序

所以这道题,本质做法和54是一样的,一样的遍历方式,只是上一道是遍历后输出,这道题是遍历后填入对应的数字就可以

具体的解析请看#54,因为又是随便改改又能AC的题目了

2 原题

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

For example,
Given n = 3,

You should return the following matrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]

3 AC解

public class Solution {
    /**
     * 我就是用上面那题改的。。遍历顺序是一样的
     * 
     * 你看题目给定的n,我都把它变成num,因为我拷贝过来的代码是n和m的。。。改动点就是把list.add改成赋值
     * 
     * 我Matrix | 的做法完全适合Matrix2.。。哈哈哈
     * */
    public int[][] generateMatrix(int n) {
        //if(n==0) return null;
        int num=n;
        int matrix[][]=new int[n][n];
        int m=num-1;
        n=num-1;
        int mstart=0,nstart=0,i,count=1;
        //System.out.println(mstart+" "+m+"  "+nstart+" "+n);
        while(mstart<=m && nstart<=n){
            for( i=nstart;i<=n;i++)
                matrix[mstart][i]=count++;
            mstart++;
            for( i=mstart;i<=m;i++)
                matrix[i][n]=count++;
            n--;
            for( i=n;i>=nstart && m>=mstart;i--)
                matrix[m][i]=count++;
            m--;
            for( i=m;i>=mstart && n>=nstart;i--)
                matrix[i][nstart]=count++;
            nstart++;
        }
        return matrix;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值