文章
螺旋矩阵
给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。…
leetcode.59
给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
纯动脑题,理清逻辑即可,注意开区间闭区间的事就行。
#include <bits/stdc++.h>
#include <vector>
using namespace std;
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
int num = n * n, height = n, width = n,x=0,y=0;
vector<vector<int>> mat(n,vector<int>(n));
int nn = 1;
while (nn <= num) {
for (int i = 0; i < width; i++) {
mat[y][x] = nn;
nn++;
x++;
}
height--;y++;x--;
for (int i = 0; i < height; i++) {
mat[y][x] = nn;
nn++;
y++;
}
width--;x--;y--;
for (int i = 0; i < width; i++) {
mat[y][x] = nn;
nn++;
x--;
}
height--;y--;x++;
for (int i = 0; i < height; i++) {
mat[y][x] = nn;
nn++;
y--;
}
width--;x++;y++;
}
return mat;
}
};