//59. 螺旋矩阵 II
/*
给你一个正整数 n ,生成一个包含 1 到 n^2 所有元素,
且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
*/
//给出如下两种方法
//法一
class Solution {
public int[][] generateMatrix(int n) {
int[][] arr = new int[n][n];
int start = 0;
int end = n;
int loop = n / 2;
int count = 0;
int i, j;
while (loop != 0) {
for (j = start; j < end - 1; j++) {
arr[start][j] = ++count;
}
for (i = start; i < end - 1; i++) {
arr[i][j] = ++count;
}
for (; j > start; j--) {
arr[i][j] = ++count;
}
for (; i > start; i--) {
arr[i][j] = ++count;
}
start++;
end--;
loop--;
}
if (n % 2 == 1) {
arr[start][start] = ++count;
}
return arr;
}
}
//法二
class Solution1 {
public int[][] generateMatrix(int n) {
int[][] arr = new int[n][n];
int t = 0;
int l = 0;
int b = n - 1;
int r = n - 1;
int num = 0;
while (num < n * n) {
for (int i = l; i <= r; i++) {
arr[t][i] = ++num;
}
t++;
for (int i = t; i <= b; i++) {
arr[i][r] = ++num;
}
r--;
for (int i = r; i >= l; i--) {
arr[b][i] = ++num;
}
b--;
for (int i = b; i >= t; i--) {
arr[i][l] = ++num;
}
l++;
}
return arr;
}
}
代码随想录leetcode刷题Day04-螺旋矩阵(部分)
最新推荐文章于 2024-08-12 15:45:48 发布