题意:输出旋转递增矩阵。
思路:简单模拟,注意边界条件。
class Solution {
public:
vector<vector<int> > re;
int l;
vector<vector<int>> generateMatrix(int n) {
l = n - 1;
vector<int> temp(n, 0);
for(int i = 0; i < n; ++ i) re.push_back(temp);
int s = 1;
for(int i = 0; i < ceil(n / 2.0); i ++) {
s = sprial(s, i, n - 2 * i);
}
return re;
}
int sprial(int s,int n, int len) {
if(len == 1) {
re[n][n] = s;
return ++ s;
}
for(int i = n; i < l - n; i ++) {
re[n][i] = s;
s ++;
}
for(int i = n; i < l - n; ++ i) {
re[i][l - n] = s;
s ++;
}
for(int i = l - n; i > n; -- i) {
re[l - n][i] = s;
s ++;
}
for(int i = l - n; i > n; -- i) {
re[i][n] = s;
s ++;
}
return s;
}
};