[leetcode]59. Spiral Matrix II螺旋遍历矩阵2

本文介绍了一个算法,用于生成螺旋顺序填充的n*n矩阵。通过控制四个边界,算法按顺时针方向从外向内逐层填充1至n^2的所有整数。详细展示了算法的实现代码,包括初始化矩阵、定义边界变量、控制填充流程等关键步骤。

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

Example:

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

 

题意:

给定n, 把1至n ^ 2所有的数,按照螺旋顺序填入方阵。

 

code

 1 /*
 2 Time: O(n^2)
 3 Space: O(n^2)
 4 */
 5 class Solution {
 6     public int[][] generateMatrix(int n) {
 7         int[][] matrix = new int[n][n];
 8         if (n == 0) return matrix;
 9         int beginX = 0, endX = n - 1;
10         int beginY = 0, endY = n - 1;
11         int num = 1;
12         while (true) {
13             for (int j = beginX; j <= endX; ++j) matrix[beginY][j] = num++;
14             if (++beginY > endY) break;
15 
16             for (int i = beginY; i <= endY; ++i) matrix[i][endX] = num++;
17             if (beginX > --endX) break;
18 
19             for (int j = endX; j >= beginX; --j) matrix[endY][j] = num++;
20             if (beginY > --endY) break;
21 
22             for (int i = endY; i >= beginY; --i) matrix[i][beginX] = num++;
23             if (++beginX > endX) break;
24         }
25         return matrix;
26     }
27 }

 

转载于:https://www.cnblogs.com/liuliu5151/p/9808268.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值