螺旋矩阵 II——力扣59

文章目录

      • 题目描述
      • 法一 模拟

题目描述

螺旋矩阵 II——力扣59_第1张图片

法一 模拟

初始化一个二维向量,名为matrix,它有n行和n列。向量的每个元素都是一个整数,初始化为0。初始化二维向量的语法如下:vector> matrix(n, vector(n));第一个参数n指定矩阵的行数第二个参数vector(n)指定矩阵的列数。第二个参数创建了一个大小为n的向量,每个元素都初始化为0,并且这个向量用于初始化矩阵的每一行。因此,这行代码创建了一个有n行和n列的二维向量,其中每个元素都初始化为0。

螺旋矩阵 II——力扣59_第2张图片

class Solution {
public:
    vector<vector<int>> generateMatrix(int n){
    	int curNum=1, maxNum=n*n;
    	vector<vector<int>> matrix(n, vector<int>(n));
    	int r=0, c=0, dr=0;
    	vector<vector<int>> directions = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
		while(curNum<=maxNum){
			matrix[r][c] = curNum;
			curNum++;
			int nextr = r + directions[dr][0], nextc = c + directions[dr][1];    //模拟下一步状态 
			if(nextr<0 || nextr>=n || nextc<0 || nextc>=n || matrix[nextr][nextc]!=0){ 
				dr = (dr+1)%4;   //保证4个方向 
			}
			r = r + directions[dr][0];
			c = c + directions[dr][1];
		}
		return matrix;    	
	} 
};

在这里插入图片描述

你可能感兴趣的:(算法刷题笔记,矩阵,leetcode,算法,数据结构,c++,职场和发展,线性代数)