Leetcode第59题(螺旋矩阵2)

简介: 这篇文章介绍了解决LeetCode第59题“螺旋矩阵II”的算法,通过C++编程实现按顺时针顺序填充一个n x n的正方形矩阵。

题目描述:

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

示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]

此题与54题类似, 就不再过多赘述了。

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        int up = 0,down = n - 1,left = 0,right = n -1;
        vector<vector<int>> ans(n,vector<int>(n));
        int num = 0;
        while(num <= n * n){
            for(int i = left; i <= right; i++) ans[up][i] = ++num;
            if(++up > down) break;

            for(int i = up; i <= down; i++) ans[i][right] = ++num;
            if(--right < left) break;

            for(int i = right; i >= left; i--) ans[down][i] = ++num;
            if(--down < up) break;

            for(int i = down; i >= up; i--) ans[i][left] = ++num;
            if(++left > right) break;   
        }
        return ans;
    }
};
相关文章
|
6月前
|
算法
力扣240 搜索二维矩阵II
力扣240 搜索二维矩阵II
|
6月前
|
算法 测试技术 C#
【二分查找】LeetCode1970:你能穿过矩阵的最后一天
【二分查找】LeetCode1970:你能穿过矩阵的最后一天
|
6月前
leetcode-329:矩阵中的最长递增路径
leetcode-329:矩阵中的最长递增路径
49 0
|
3月前
|
存储 算法 NoSQL
LeetCode第73题矩阵置零
文章介绍了LeetCode第73题"矩阵置零"的解法,通过使用矩阵的第一行和第一列作为标记来记录哪些行或列需要置零,从而在不增加额外空间的情况下解决问题。
LeetCode第73题矩阵置零
|
3月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
50 6
|
3月前
|
算法 JavaScript Python
【Leetcode刷题Python】79. 单词搜索和剑指 Offer 12. 矩阵中的路径
Leetcode第79题"单词搜索"的Python解决方案,使用回溯算法在给定的二维字符网格中搜索单词,判断单词是否存在于网格中。
41 4
|
3月前
|
算法 Python
【Leetcode刷题Python】73. 矩阵置零
本文介绍了LeetCode第73题的解法,题目要求在给定矩阵中将所有值为0的元素所在的行和列全部置为0,并提供了一种原地算法的Python实现。
32 0
【Leetcode刷题Python】73. 矩阵置零
|
5月前
|
算法
力扣经典150题第三十七题:矩阵置零
力扣经典150题第三十七题:矩阵置零
31 2
|
5月前
|
存储 数据采集 算法
LeetCode题目73:矩阵置零
LeetCode题目73:矩阵置零
|
5月前
力扣随机一题 6/28 数组/矩阵
力扣随机一题 6/28 数组/矩阵
41 0