title: leetcode-59-螺旋矩阵2(java)
date: 2019-09-14 15:21:14
categories:
- leetcode
tags: - leetcode
螺旋矩阵2
-
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
在真实的面试中遇到过这道题?来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/spiral-matrix-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 -
首先确定边界次数0-n/2次,然后确定边界位置
-
从左到右:
for (int j=i;j<n-i;j++){ result[i][j] = k++; }
-
从上到下:
for (int j=i+1;j<n-i;j++){ result[j][n-i-1] = k++; }
-
从右到左:
for (int j=n-i-2;j>=i;j--){ result[n-i-1][j] = k++; }
-
从下到上
for (int j=n-i-2;j>i;j--){ result[j][i] = k++; }
-
总体代码
class Solution { public int[][] generateMatrix(int n) { int[][] result = new int[n][n]; int k = 1; int i = 0; for ( i = 0; i <= n/2; i++) { for (int j=i;j<n-i;j++){ result[i][j] = k++; } for (int j=i+1;j<n-i;j++){ result[j][n-i-1] = k++; } for (int j=n-i-2;j>=i;j--){ result[n-i-1][j] = k++; } for (int j=n-i-2;j>i;j--){ result[j][i] = k++; } } return result; } }
-
-
题目没有比较好的解法,只有暴力,寻找螺旋规律