力扣:59. 螺旋矩阵 II
题目:
59. 螺旋矩阵 II
难度中等975收藏分享切换为英文接收动态反馈
给你一个正整数 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
第一种对法:
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> s(n,vector<int>(n));
int top=0,bottom=n-1;
int right=n-1,left=0;
int cnt = 1;
while(top <= bottom && right >= left){
for(int i=left;i<=right;i++){
s[top][i]=cnt++;
}
for(int i=top+1;i<=bottom;i++){
s[i][right]=cnt++;
}
for(int i=right-1;i>=left;i--){
s[bottom][i]=cnt++;
}
for(int i=bottom-1;i>top;i--){
s[i][left]=cnt++;
}
top++,bottom--;
left++,right--;
}
return s;
}
};
注意细节:循环中的条件,行和列
时间复杂度O(n^2)
空间复杂度O(1)