59. Spiral Matrix II (Medium)

https://leetcode.com/problems/spiral-matrix-ii/

Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

Example:

Input: 3
Output:
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]

Solutions

class Solution {
    int count = 1;

    public int[][] generateMatrix(int n) {
        int[][] matrix = new int[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                matrix[i][j] = 0;
            }
        }

        if (n == 0) {
            return matrix;
        }

        int width = matrix[0].length;

        int m = Math.min(width, n);

        for (int i = 0; i < (int) Math.ceil(m / 2.0); i++) {
            generateMatrix(matrix, i);
        }

        return matrix;
    }

    private int[][] generateMatrix(int[][] matrix, int margin) {
        int width = matrix[0].length;
        int height = matrix.length;

        if (margin > width || margin > height) {
            return matrix;
        }

        for (int i = margin; i < width - margin; i++) {
            matrix[margin][i] = count++;
        }

        for (int i = margin + 1; i < height - margin; i++) {
            matrix[i][width - margin - 1] = count++;
        }

        for (int i = width - margin - 2; i >= margin && (height - margin - 1 > margin); i--) {
            matrix[height - margin - 1][i] = count++;
        }

        for (int i = height - margin - 2; i > margin && (width - margin - 1 > margin); i--) {
            matrix[i][margin] = count++;
        }

        return matrix;
    }
}

Incorrect Solutions

References

Copyright © iovi.com 2017 all right reserved,powered by GitbookLast Modification: 2019-12-03 11:01:18

results matching ""

    No results matching ""