抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年

人们总是混淆了欲望和理想

Leetcode 59. 螺旋矩阵 II

59. 螺旋矩阵 II

解法:按层模拟 解法比 54. 螺旋矩阵 简单不少。

一图解所有:

常规思路,需要注意一个地方:

使用num <= tar而不是l < r || t < b作为迭代条件,是为了解决当n为奇数时,矩阵中心数字无法在迭代过程中被填充的问题。

详情请看参考精选题解:https://leetcode-cn.com/problems/spiral-matrix-ii/solution/spiral-matrix-ii-mo-ni-fa-she-ding-bian-jie-qing-x/

class Some59Solution {
    fun generateMatrix(n: Int): Array<IntArray> {
        if (n <= 0) return emptyArray()
        val matrix = Array(n) { IntArray(n) }
       val tar = n * n
        var num = 1
        var l = 0
        var r = n - 1
        var t = 0
        var b = n - 1
        while (num <= tar) {
            for (i in l..r) matrix[t][i] = num++
            t++
            for (i in t..b) matrix[i][r] = num++
            r--
            for (i in r downTo l) matrix[b][i] = num++
            b--
            for (i in b downTo t) matrix[i][l] = num++
            l++
        }
        return matrix
    }
}

fun main() {
    Some59Solution().generateMatrix(5).forEach {
        it.forEach {
            print("$it ")
        }
        println()
    }
}

0条评论

发表评论