【LeetCode-中等】59.螺旋矩阵II - 二维数组

力扣题目链接

本题并不涉及到什么算法,就是模拟过程,按照左到右、上到下、右到左、下到上 的顺序由外向内一圈一圈画下去,要注意边界情况,是否溢出以及当前位置是否已经访问过。

cpp 复制代码
class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        //0为未填充,非0则已填充
        vector<vector<int>> matrix(n, vector<int>(n, 0));
        int line = 0, column = 0;
        for(int i = 1; i <= n * n;){
            //从左到右
            while(column < n && matrix[line][column] == 0){
                matrix[line][column] = i++;
                column++;
            }
            column--;
            line++;
            //从上到下
            while(line < n && matrix[line][column] == 0){
                matrix[line][column] = i++;
                line++;
            }
            line--;
            column--;
            //从右到左
            while(column >= 0 && matrix[line][column] == 0){
                matrix[line][column] = i++;
                column--;
            }
            column++;
            line--;
            //从下到上
            while(line >= 0 && matrix[line][column] == 0){
                matrix[line][column] = i++;
                line--;
            }
            line++;
            column++;
        }
        return matrix;
    }
};

同样类型的题目:54.螺旋矩阵

同样的思路,但由于题目中没有具体给出几行几列,要知道怎么得到vector二维数组的行数和列数。

cpp 复制代码
//  行数				      // 列数
int rows = matrix.size(), columns = matrix[0].size();
int total = rows * columns;
相关推荐
Liangwei Lin4 小时前
LeetCode 118. 杨辉三角
算法·leetcode·职场和发展
YL200404266 小时前
047从前序与中序遍历序列构造二叉树
算法·leetcode
如竟没有火炬9 小时前
字符串相乘——int数组转字符串
开发语言·数据结构·python·算法·leetcode·深度优先
YL2004042612 小时前
046二叉树展开为链表
数据结构·leetcode·链表
如竟没有火炬13 小时前
至少有K个重复字符的最长子串
开发语言·数据结构·python·算法·leetcode·动态规划
水蓝烟雨14 小时前
2359. 找到离给定两个节点最近的节点
算法·leetcode
阿Y加油吧15 小时前
二刷动态规划经典题:从打家劫舍到完全平方数,Java 实现复盘与优化
leetcode
阿Y加油吧15 小时前
二刷 LeetCode:爬楼梯与杨辉三角,Java 实现复盘
java·算法·leetcode
凌波粒15 小时前
LeetCode--101. 对称二叉树(二叉树)
算法·leetcode·职场和发展
_深海凉_15 小时前
LeetCode热题100-二叉树的最大深度
算法·leetcode·职场和发展