螺旋矩阵II(leetcode 59)

转圈过程(边界处理)遵循循环不变量的原则,坚持一个原则处理每一条边,左闭右开处理

cpp 复制代码
class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> num(n, vector<int>(n, 0));
        int startx = 0;
        int starty = 0;
        int offset = 1;
        int count = 1;
        int loop = n/2;
        int i;
        int j;
        while(loop --)
        {
            
            for( j = starty; j < n - offset; j++)
            {
                num[startx][j] = count;
                count ++;
            }
            for( i = startx; i < n - offset; i++)
            {
                num[i][j] = count;
                count ++;
            }
            for( ; j > starty; j--)
            {
                num[i][j] = count;
                count ++;
            }
            for( ; i > startx; i--)
            {
                num[i][j] = count;
                count ++;
            }
            startx++;
            starty++;
            offset++;
        }
        if(n % 2)
        {
            num[n/2][n/2] = count;
        }
        return num;
    }
};
相关推荐
小肝一下10 分钟前
3. 单链表
c语言·数据结构·c++·算法·leetcode·链表·dijkstra
劈星斩月16 分钟前
监督学习算法 之 决策树
学习·算法·决策树
学计算机的计算基21 分钟前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定
java·笔记·算法
tachibana225 分钟前
hot100 前 K 个高频元素(347)
java·数据结构·算法·leetcode
To_OC8 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode
旖-旎9 小时前
LeetCode 518:零钱兑换||(完全背包)—— 题解
c++·算法·leetcode·动态规划·背包问题
To_OC10 小时前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
delishcomcn11 小时前
AI视觉识别+分切算法:电化铝缺陷检测与裁切一体化解锁
人工智能·算法
触底反弹11 小时前
深入理解大模型采样:Temperature、Top-K、Top-P 的原理与实战
人工智能·算法·面试
雪碧聊技术11 小时前
力扣 LCR 091. 粉刷房子 —— 动态规划入门详解
算法·动态规划