螺旋矩阵c++语言_每日一题——螺旋矩阵II

菜鸡每日一题系列打卡59

每天一道算法题目 

小伙伴们一起留言打卡

坚持就是胜利,我们一起努力!

题目描述(引自LeetCode)

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

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

题目分析

这道题目和之前螺旋矩阵的题目是完全相同的思路,由变换矩阵顺序到生成矩阵,其实只是将按顺序遍历矩阵并进行存储操作,改为了遍历顺序并进行赋值操作而已。

感兴趣的小伙伴可以移步至文末相关链接查看螺旋矩阵的相关文章。话不多说,上代码!

代码实现

class Solution {        public int[][] generateMatrix(int n) {        int[][] matrix = new int[n][n];        // 顺时针螺旋顺序边界        int rs = 0, re = n - 1, cs = 0, ce = n - 1;        // 当前值        int flag = 1;        // 遍历二维数组,每次while循环遍历一层        while (rs <= re && cs <= ce) {            // 从左到右            for (int c = cs; c <= ce; c++) matrix[rs][c] = flag++;            // 从上到下            for (int r = rs + 1; r <= re; r++) matrix[r][ce] = flag++;            if (rs < re && cs < ce) {                // 从右到左                for (int c = ce - 1; c > cs; c--) matrix[re][c] = flag++;                // 从下到上                for (int r = re; r > rs; r--) matrix[r][cs] = flag++;            }            // 调整边界            rs++;            re--;            cs++;            ce--;        }        return matrix;    }}

代码分析

对代码进行分析,程序遍历了整个二维数组,因此,时间复杂度为O(n^2),而就空间而言,如果考虑结果存储所需要的空间,则空间复杂度为O(n^2),如果不考虑结果存储所需要的空间,则仅需要常数级别的额外空间,因此,空间复杂度为O(1)。

执行结果

e0b39d32e6d390ac08c28dcdac495049.png

相关链接

每日一题——螺旋矩阵

1f340dced126f2b8a8bbb129f595e32a.png

学习 | 工作 | 分享

2f75c1dc313967c7f928ee920e84f95e.png

?长按关注“有理想的菜鸡

只有你想不到,没有你学不到 96a79416bfbc7d280793339a74f2e622.gif点击“阅读原文”
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值