本文主要是介绍方阵解螺旋002,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、描述
59给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
题目链接
姊妹篇
2、关键字
矩阵复原
3、思路
模拟
4、notes
拷贝昨天的代码
5、复杂度
时间O(N平方)
空间O(N平方)
6、code
#define right 1
#define down 2
#define left 3
#define up 0
class Solution {
public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>>res(n,vector<int>(n,0));vector<vector<int>>flag(n,vector<int>(n,0)); // 标记有没有访问过int N=n*n; // 结果个数//vector<int>res;int direct=1;int i=0,j=0;int num=1;while(N){if(direct==right && flag[i][j]==0){ // 向右前行res[i][j]=num;N--;flag[i][j]=1;j++;if(j==n || flag[i][j]==1){ // 向下变向direct=down;i++;j--; }num++;}elseif(direct==down && flag[i][j]==0){ // 向下前行res[i][j]=num;N--;flag[i][j]=1;i++; if(i==n || flag[i][j]==1){ // 向左变向direct=left;j--;i--; }num++;}elseif(direct==left && flag[i][j]==0){ // 前行res[i][j]=num;N--;flag[i][j]=1;j--;if(j==-1 || flag[i][j]==1){ // 变向direct=up;i--;j++; }num++;}elseif(direct==up && flag[i][j]==0){ //前行res[i][j]=num;N--;flag[i][j]=1;i--;if(i==-1 || flag[i][j]==1){ // 变向direct=right;j++;i++;}num++;}}return res;}
};
这篇关于方阵解螺旋002的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!