Leetcode每日一题 59. 螺旋矩阵 II
59. 螺旋矩阵 II
给你一个正整数 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>> ans(n,vector<int>(n)); int x1 = 0,y1 = 0; int x2 = n - 1 , y2 = n - 1; int num = 1; while(true) { if(x1>x2||y1>y2) break; if(x1 == x2) { for(int i = y1; i <= y2; i++) ans[x1][i] = num++; break; } if(y1 == y2) { for(int i = x1 ; i <= x2 ;i++) ans[i][y1] = num++; break; } for(int i = y1 ; i < y2 ; i++)ans[x1][i] = num++; for(int i = x1 ; i < x2 ; i++)ans[i][y2] = num++; for(int i = y2 ; i > y1 ; i--)ans[x2][i] = num++; for(int i = x2 ; i > x1 ; i--)ans[i][y1] = num++; x1++; y1++; x2--; y2--; } return ans; } };