LeetCode_Spiral Matrix II

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
 
For example,
Given n = 3,
 
You should return the following matrix:
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]

  

复制代码
class Solution {
public:
    vector<vector<int> > generateMatrix(int n) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        vector<vector<int>> res(n,vector<int>(n));
        
        int lays = (n+1)/2;
        bool single = n%2;
        int num = 1;
        for(int lay = 0; lay < lays; lay ++){
        
            int topRow = lay;
            int rightColumn = n - 1 - lay;
            
            //process the top
            for(int i = lay; i <= rightColumn; i++)
                  res[topRow][i] = num++;
                  
            //process the right Column
            for(int i = lay+1; i <= rightColumn ;i++)
                  res[i][rightColumn] = num++;
                  
            if(lay == lays -1 && single )
                    continue;
                    
            //process the bottom 
            for(int i = rightColumn - 1; i>= lay; i--)
                  res[rightColumn][i] = num++;
                  
            for(int i = rightColumn - 1; i> lay ;i--)
                 res[i][lay] = num++;
        
        }
        
        return res;
    }
};
复制代码

 

posted @   冰点猎手  阅读(172)  评论(0编辑  收藏  举报
编辑推荐:
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞
· MQ 如何保证数据一致性?
· 《HelloGitHub》第 108 期
点击右上角即可分享
微信分享提示