59. 螺旋矩阵 II

题目描述

给你一个正整数 n ,生成一个包含 1n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix

示例 1:

复制代码
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

复制代码
输入:n = 1
输出:[[1]]

提示:

  • 1 <= n <= 20

解答

cpp 复制代码
class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        // 生成顺序:每一轮右下左上
        vector<vector<int>> res(n, vector<int>(n, 0));
        int left = 0, right = n - 1, up = 0, down = n - 1; // 四方向边界
        int  i = 0, j = 0; // 起始位置
        for(int i = 1; i <= n*n;)
        {
            // 右
            for(int j = left; j <= right; ++j)
            {
                res[up][j] = i++;
            }
            up = up + 1; // 上边界下移一个单位
            // 下
            for(int j = up; j <= down; ++j)
            {
                res[j][right] = i++;
            }
            right = right - 1; // 右边界左移一个单位
            // 左
            for(int j = right; j >= left; --j)
            {
                res[down][j] = i++;
            }
            down = down - 1;
            // 下
            for(int j = down; j >= up; --j)
            {
                res[j][left] = i++;
            }
            left = left + 1;
        }
        return res;
    }
};
相关推荐
residual_fan1 小时前
深度渐进收缩学习(DPSL):面向强噪声与类内分散的机械复合故障诊断方法
人工智能·算法·数据挖掘·数据分析
a187927218312 小时前
【算法】动态规划第五篇:区间 DP——从“看什么都像背包“到“最后戳谁“
算法·leetcode·动态规划·dp·区间·区间dp·算法讲解
whitelbwwww2 小时前
c++ 多线程
开发语言·c++·算法
额鹅恶饿呃2 小时前
随着CentOS官方停服的时间越来越久,大量仍在使用CentOS7的企业和运维从业者
java·python·算法·c#·ruby
白狐_7982 小时前
408 数据结构|KMP算法核心:为什么不用主串回退
数据结构·算法
wuyk5552 小时前
13.堆排序:基于完全二叉树的高效排序算法一、什么是堆排序?
开发语言·算法·排序算法
qinzechen2 小时前
本周科技行业热点汇总·2026第36周(2026年8月31日-9月6日)
c++·科技·算法
白狐_7983 小时前
408 数据结构|红黑树 vs AVL:高频考点、易错判断与可能出题方式
数据结构·算法
zuozong_3 小时前
C++类与对象
开发语言·c++·算法
hansang_IR3 小时前
【代码】分层最短路模板
c++·算法·最短路