Spiral Matrix II,原题链接leetcode原题链接
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3
,
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]题目大意:
给定一个整数n,生成一个螺旋矩阵并返回。
解题思路
题目要求返回一个螺旋矩阵,实际上就是要求我们按照螺旋的顺序在一个方阵中填数。从外围一圈一圈的向中心逼近,在填当前圈的过程中,我们分为四个步骤:
1,从左上到右上
2,从右上到右下
3,从右下到左下
4,从左下到左上
每一圈都按照此顺序往中心逼近,算法确定了,剩下的问题就是代码的编写问题了
直接上代码
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int> > result(n,vector<int>(n));//返回的二维的一个容器
if(n==0)
return result;
int k=1;
int i=0;//用来表示当前走了多少圈
int j=0;
while(k<=n*n){
while(n>(i+j)){//从左上到右上
result[i][j]=k;
k++;
j++;
}
j=i+1;
while(n>(i+j)){//右上到右下
result[j][n-i-1]=k;
k++;
j++;
}
j=i+1;
while(n>(i+j)){//右下到左下
result[n-i-1][n-j-1]=k;
k++;
j++;
}
j=i+2;
while(n>(i+j)){//左下到左上
result[n-j][i]=k;
k++;
j++;
}
i++;
j=i;
}
return result;
}
};