leetcode 59:螺旋矩阵
给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]
提示:
1 <= n <= 20
Related Topics
数组
矩阵
模拟
一圈一圈遍历
先确定i和j的最大和最小范围。
- 先输入第一行,mini加1。
- 输入最后一列,maxj减一。
- 以此类推,这样一圈一圈地输入即可。
class Solution {
public int[][] generateMatrix(int n) {
int[][] matrix = new int[n][n];
int count = 1;
int mini = 0;
int maxi = n-1;
int minj = 0;
int maxj = n-1;
while (mini<=maxi && minj <= maxj){
//第一行
for(int j = minj;j<=maxj;j++){
matrix[mini][j] = count;
count++;
}
mini++;
//最后一列
for(int i = mini;i<=maxi;i++){
matrix[i][maxj] = count;
count++;
}
maxj--;
//最后一行
for(int j = maxj;j>=minj;j--){
matrix[maxi][j] = count;
count++;
}
maxi--;
//第一列
for(int i = maxi; i>=mini;i--){
matrix[i][minj] = count;
count++;
}
minj++;
}
return matrix;
}
}
解答成功:
执行耗时:0 ms,击败了100.00% 的Java用户
内存消耗:39.5 MB,击败了20.72% 的Java用户