LeetCode——Spiral Matrix II

本文介绍了一种螺旋矩阵生成算法,该算法能够在给定正整数n的情况下,生成一个n×n的螺旋矩阵,矩阵元素从1到n²按螺旋顺序填充。通过控制四个边界变量,算法实现了从外向内螺旋填充的过程。

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

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

  • Example:
    Input: 3
    Output:
    [
    [ 1, 2, 3 ],
    [ 8, 9, 4 ],
    [ 7, 6, 5 ]
    ]

解法

这道题其实就是把Spiral Matrix的代码稍微改一下就可以了,那道题是螺旋打印出矩阵内的值,这道题就螺旋赋值就可以了

public int[][] generateMatrix(int n) {
		int up=0,down=n-1,left=0,right=n-1;
		int[][] res=new int[n][n];
		int index=1;
		while(true){
			for(int j=left;j<=right;j++)
				res[up][j]=index++;
			if(++up>down)
				break;
			for(int j=up;j<=down;j++)
				res[j][right]=index++;
			if(--right<left)
				break;
			for(int j=right;j>=left;j--)
				res[down][j]=index++;
			if(--down<up)
				break;
			for(int j=down;j>=up;j--)
				res[j][left]=index++;
			if(++left>right)
				break;
		}
	    return res;
	}

Runtime: 1 ms, faster than 100.00% of Java online submissions for Spiral Matrix II.
Memory Usage: 36.8 MB, less than 58.01% of Java online submissions for Spiral Matrix II.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值