LeetCode 59.螺旋矩阵II

题目

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

示例:

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

实现

Java实现

思路: 首先设定边界,确定循环条件(num<=target),因为从1到n^2这些数字都要被赋值,之后利用循环在边界内进行赋值即可,按照顺时针的顺序,从左到右,从上到下,从右到左,从下到上。

class Solution {
    public int[][] generateMatrix(int n) {
        //定义边界
        int left = 0, right = n - 1, top = 0, buttom = n - 1;
        int num = 1;
        int target = n * n;
        int[][] res = new int[n][n];
        while (num <= target) {
            //从左到右
            for (int i = left; i <= right; i++) {
                res[top][i] = num++;
            }
            top++;
            //从上到下
            for (int i = top; i <= buttom; i++) {
                res[i][right] = num++;
            }
            right--;
            //从右到左
            for (int i = right; i >= left; i--) {
                res[buttom][i] = num++;
            }
            buttom--;
            //从下到上
            for (int i = buttom; i >= top; i--) {
                res[i][left] = num++;
            }
            left++;
        }
        return res;
    }
}
  • 时间复杂度:O(n^2)
上一篇:5.1.15 MySQL 服务器时区支持


下一篇:基于springboot的ShardingSphere5.X的分库分表的解决方案之自动时间段分片算法解决方案(二十四)