Spiral Matrix II leetcode java
题目:
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3
,
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
题解:
这道题跟Spiral Matrix想法也是类似的,就是依照矩阵从外圈到内圈建立。
要考虑如果是奇数行列的话,最中心的那个点要单加。
代码如下:
1 public int[][] generateMatrix(int n) {
2 int[][] res = new int[n][n];
3 int k = 1;
4 int top = 0, bottom = n - 1, left = 0, right = n - 1;
5 while (left < right && top < bottom) {
6 for (int j = left; j < right; j++) {
7 res[top][j] = k++;
8 }
9 for (int i = top; i < bottom; i++) {
10 res[i][right] = k++;
11 }
12 for (int j = right; j > left; j--) {
13 res[bottom][j] = k++;
14 }
15 for (int i = bottom; i > top; i--) {
16 res[i][left] = k++;
17 }
18 left++;
19 right--;
20 top++;
21 bottom--;
22 }
23 if (n % 2 != 0)
24 res[n / 2][n / 2] = k;
25 return res;
26 }
2 int[][] res = new int[n][n];
3 int k = 1;
4 int top = 0, bottom = n - 1, left = 0, right = n - 1;
5 while (left < right && top < bottom) {
6 for (int j = left; j < right; j++) {
7 res[top][j] = k++;
8 }
9 for (int i = top; i < bottom; i++) {
10 res[i][right] = k++;
11 }
12 for (int j = right; j > left; j--) {
13 res[bottom][j] = k++;
14 }
15 for (int i = bottom; i > top; i--) {
16 res[i][left] = k++;
17 }
18 left++;
19 right--;
20 top++;
21 bottom--;
22 }
23 if (n % 2 != 0)
24 res[n / 2][n / 2] = k;
25 return res;
26 }
Reference:leetcodenotes.wordpress.com/2013/11/23/leetcode-spiral-matrix-%E6%8A%8A%E4%B8%80%E4%B8%AA2d-matrix%E7%94%A8%E8%9E%BA%E6%97%8B%E6%96%B9%E5%BC%8F%E6%89%93%E5%8D%B0/
分类:
leetcode每题整理
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· “你见过凌晨四点的洛杉矶吗?”--《我们为什么要睡觉》
· 编程神器Trae:当我用上后,才知道自己的创造力被低估了多少
· C# 从零开始使用Layui.Wpf库开发WPF客户端
· C#/.NET/.NET Core技术前沿周刊 | 第 31 期(2025年3.17-3.23)
· 接口重试的7种常用方案!