⬆︎
×

[LC] 0059 Spiral Matrix II

Java

import java.util.Arrays;

/**
 * <a href="https://leetcode.cn/problems/spiral-matrix-ii/">Spiral Matrix II</a>
 * 数组;矩阵;模拟
 */
class Solution {
    public int[][] generateMatrix(int n) {
        int[][] res = new int[n][n];
        int cur = 1;

        int i = 0, j = 0;
        while (cur <= n * n) {
            while (j < n && res[i][j] == 0) {
                res[i][j++] = cur++;
            }
            j--;
            i++;
            while (i < n && res[i][j] == 0) {
                res[i++][j] = cur++;
            }
            i--;
            j--;
            while (j >= 0 && res[i][j] == 0) {
                res[i][j--] = cur++;
            }
            j++;
            i--;
            while (i >= 0 && res[i][j] == 0) {
                res[i--][j] = cur++;
            }
            i++;
            j++;
        }
        return res;
    }
}

Go

func generateMatrix(n int) [][]int {
    res := make([][]int, n)
    for i := 0; i < n; i++ {
        res[i] = make([]int, n)
    }
    cur := 1

    i, j := 0, 0
    for cur <= n*n {
        for j < n && res[i][j] == 0 {
            res[i][j] = cur
            cur++
            j++
        }
        j--
        i++
        for i < n && res[i][j] == 0 {
            res[i][j] = cur
            cur++
            i++
        }
        i--
        j--
        for j >= 0 && res[i][j] == 0 {
            res[i][j] = cur
            cur++
            j--
        }
        j++
        i--
        for i >= 0 && res[i][j] == 0 {
            res[i][j] = cur
            cur++
            i--
        }
        i++
        j++
    }
    return res
}

JavaScript

/**
 * @param {number} n
 * @return {number[][]}
 */
var generateMatrix = function (n) {
    let res = new Array(n).fill(0).map(() => new Array(n).fill(0));
    let cur = 1;

    let i = 0, j = 0;
    while (cur <= n * n) {
        while (j < n && res[i][j] === 0) {
            res[i][j++] = cur++;
        }
        j--;
        i++;
        while (i < n && res[i][j] === 0) {
            res[i++][j] = cur++;
        }
        i--;
        j--;
        while (j >= 0 && res[i][j] === 0) {
            res[i][j--] = cur++;
        }
        j++;
        i--;
        while (i >= 0 && res[i][j] === 0) {
            res[i--][j] = cur++;
        }
        i++;
        j++;
    }
    return res;
};

PHP

class Solution {

    /**
     * @param Integer $n
     * @return Integer[][]
     */
    function generateMatrix(int $n) {
        $res = array_fill(0, $n, array_fill(0, $n, 0));
        $cur = 1;

        $i = $j = 0;
        while ($cur <= $n * $n) {
            while ($j < $n && $res[$i][$j] == 0) {
                $res[$i][$j++] = $cur++;
            }
            $j--;
            $i++;
            while ($i < $n && $res[$i][$j] == 0) {
                $res[$i++][$j] = $cur++;
            }
            $i--;
            $j--;
            while ($j >= 0 && $res[$i][$j] == 0) {
                $res[$i][$j--] = $cur++;
            }
            $j++;
            $i--;
            while ($i >= 0 && $res[$i][$j] == 0) {
                $res[$i--][$j] = $cur++;
            }
            $i++;
            $j++;
        }
        return $res;
    }
}

发表评论