Java经典算法:螺旋矩阵

2023-07-20 15:24:03 浏览数 (2)

前言

今天给大家演示一下Java经典算法:螺旋矩阵。给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵,该算法的时间复杂度是O(n^2)

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

思路

螺旋矩阵其实就是使用一个二维数组来存入数字,按照"右->下->左->上"的方向对二维数组进行填充,只要控制好边界即可。

代码示例

代码语言:javascript复制
public class Main {
    public static int[][] spiralMatrix2(int n){
        int[][] arr = new int[n][n];
        int up = 0;
        int down = n-1;
        int left = 0;
        int right = n-1;
        int num = 1;
        while (true){
            for (int i = left; i <= right; i  ) {
                arr[left][i] = num  ;
            }
            if (  up>down)break;
            for (int i = up; i <= down; i  ) {
                arr[i][right] = num  ;
            }
            if (--right<left)break;
            for (int i = right; i >=left ; i--) {
                arr[down][i] = num  ;
            }
            if (--down<up)break;
            for (int i = down; i >= up; i--) {
                arr[i][left] = num  ;
            }
            if (  left>right)break;
        }

        return arr;
    }

    public static void main(String[] args) {
        int[][] ints = spiralMatrix2(3);
        for (int i = 0; i < ints.length; i  ) {
            System.out.print(Arrays.toString(ints[i])  " ");
            System.out.println();
        }
    }
}

结果

0 人点赞