【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;
相关推荐
人道领域13 小时前
【LeetCode刷题日记】47.全排列Ⅱ
java·开发语言·算法·leetcode
Navigator_Z13 小时前
LeetCode //C - 1095. Find in Mountain Array
c语言·算法·leetcode
暖阳华笺18 小时前
【数据结构与算法】哈希专题
数据结构·c++·算法·leetcode·哈希算法
AKA__Zas18 小时前
芝士算法(滑动窗口片 2.0)
java·算法·leetcode·学习方法
四代水门19 小时前
LeetCode刷算法题(C++)
c++·算法·leetcode
退休倒计时1 天前
【每日一题】LeetCode 53. 最大子数组和 TypeScript
数据结构·算法·leetcode·typescript
洛水水1 天前
【力扣100题】86.柱状图中最大的矩形
算法·leetcode·职场和发展
洛水水1 天前
【力扣100题】81.寻找两个正序数组的中位数
数据结构·算法·leetcode
洛水水1 天前
【力扣100题】85.每日温度
算法·leetcode·职场和发展
Kurisu_红莉栖1 天前
力扣56合并区间
算法·leetcode