欢迎光临散文网 会员登陆 & 注册

力扣:59. 螺旋矩阵 II

2023-03-14 19:09 作者:薄荷硬糖酱  | 我要投稿

题目:

59. 螺旋矩阵 II

难度中等975收藏分享切换为英文接收动态反馈

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

 

示例 1:

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

示例 2:

输入:n = 1输出:[[1]]

 

提示:

  • 1 <= n <= 20

第一种法:

class Solution {

public:

    vector<vector<int>> generateMatrix(int n) {

        vector<vector<int>> s(n,vector<int>(n));

        int top=0,bottom=n-1;

        int right=n-1,left=0;

        int cnt = 1;

        while(top <= bottom && right >= left){

            for(int i=left;i<=right;i++){

                s[top][i]=cnt++;

            }

            for(int i=top+1;i<=bottom;i++){

                s[i][right]=cnt++;

            }

            for(int i=right-1;i>=left;i--){

                s[bottom][i]=cnt++;

            }

            for(int i=bottom-1;i>top;i--){

                s[i][left]=cnt++;

            }

            top++,bottom--;

            left++,right--;

        }

        return s;

    }

};


注意细节:循环中的条件,行和列

时间复杂度O(n^2)

空间复杂度O(1)

力扣:59. 螺旋矩阵 II的评论 (共 条)

分享到微博请遵守国家法律