「日更刷题」59.螺旋矩阵

简介: 「日更刷题」59.螺旋矩阵

一、题目描述:

59.螺旋矩阵-力扣

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

实例1:

输入: n = 3
输出: [[1,2,3],[8,9,4],[7,6,5]]
解释: n = 3 代表是由数字1到9组成了一个 int[3][3] 的数组

网络异常,图片无法展示
|

实例2:

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

提示:    1 <= n <= 20

二、思路分析

模拟填入矩阵的过程:

  • 从上行左到右
  • 从右侧上到下
  • 从下行右到左
  • 从左侧下到上

使用二分法判断填入矩阵的循环次数, 三次有两圈, 六次有三圈, 九次有五圈. 这里要注意的是最后要加个判断, 如果是单数最中间的数字要加进去

采用左闭右开顺序添加数字, 避免后期混乱容易出错, 这里借用卡尔的一张图

网络异常,图片无法展示
|

三、java代码

public int[][] generateMatrix(int n) {
       int loopNum = 0;
        int[][] res = new int[n][n];
        int start = 0;
        int count = 1;
        int i,j;
        while(loopNum++ < n /2){
            for (i = start; i< n - loopNum;i++){
                res[start][i] = count;
                count++;
            }
            for (j = start ; j < n-loopNum; j++){
                res[j][i] = count;
                count++;
            }
            for (; i >= loopNum;i--){
                res[j][i] = count;
                count++;
            }
            for (; j >= loopNum; j--){
                res[j][start] = count;
                count++;
            }
            start ++;
        }
        if (n % 2 == 1){
            res[start][start] = count;
        }
        return res;
    }

四、总结

最开始看着还是比较难的, 但是真正的实践起来之后就也还好, 中间碰到一点小问题都是边界没有找好.

五、参考

代码随想录 - 螺旋矩阵思路



目录
相关文章
|
3月前
|
算法
LeetCode第53题最大子数组和
LeetCode第53题"最大子数组和"的解题方法,利用动态规划思想,通过一次遍历数组,维护到当前元素为止的最大子数组和,有效避免了复杂度更高的暴力解法。
LeetCode第53题最大子数组和
|
1月前
|
C++
Leetcode第54题(螺旋矩阵)
这篇文章介绍了LeetCode第54题“螺旋矩阵”的解题思路和C++的实现代码,该题目要求按照顺时针螺旋顺序返回给定矩阵中的所有元素。
14 1
Leetcode第54题(螺旋矩阵)
|
1月前
|
算法 C++
Leetcode第59题(螺旋矩阵2)
这篇文章介绍了解决LeetCode第59题“螺旋矩阵II”的算法,通过C++编程实现按顺时针顺序填充一个n x n的正方形矩阵。
15 0
|
1月前
|
算法 C++
Leetcode第53题(最大子数组和)
这篇文章介绍了LeetCode第53题“最大子数组和”的动态规划解法,提供了详细的状态转移方程和C++代码实现,并讨论了其他算法如贪心、分治、改进动态规划和分块累计法。
57 0
|
3月前
|
算法
LeetCode第59题螺旋矩阵 II
LeetCode第59题"螺旋矩阵 II"的解题方法,通过模拟螺旋填充过程,一圈一圈从外到内按顺序填充数字,直到完成整个矩阵的构建。
LeetCode第59题螺旋矩阵 II
|
6月前
螺旋矩阵~
螺旋矩阵~
|
6月前
|
Java C++ Python
leetcode-59:螺旋矩阵 II
leetcode-59:螺旋矩阵 II
34 0
|
算法 安全 Swift
LeetCode - #59 螺旋矩阵 II
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
LeetCode - #59 螺旋矩阵 II
|
算法 安全 Swift
LeetCode - #54 螺旋矩阵
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
LeetCode - #54 螺旋矩阵
|
算法 安全 Swift
LeetCode - #18 四数之和
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。