12.LeetCode刷題For Swift·59. Spiral Matrix II螺旋矩陣II

1、原題

給定一個(gè)正整數(shù) n,生成一個(gè)包含 1 到 n2 所有元素,且元素按順時(shí)針順序螺旋排列的正方形矩陣。

示例:

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

2、思路

理解了這個(gè)題的邏輯,方法就很簡(jiǎn)單了,主要還是確定上下左右邊界,一條邊一條邊填充。

3、代碼

class Solution {
    func generateMatrix(_ n: Int) -> [[Int]] {
        // 定義上下左右邊界,
        var top = 0
        var right = n - 1
        var bottom = n - 1
        var left = 0
        // 返回結(jié)果
        var result = [[Int]](repeating: [Int](repeating: 0, count: n), count:n)
        // 初始值從1開(kāi)始
        var num = 1
        // 結(jié)束值
        let target = n * n
        while num <= target {
            // 從左到右從上倒下開(kāi)始排列
            for i in stride(from: left, through: right, by: 1) {
                result[top][i] = num
                num += 1
            }
            // 排完一列,內(nèi)縮
            top += 1
            for i in stride(from: top, through: bottom, by: 1) {
                result[i][right] = num
                num += 1
            }
            right -= 1
            for i in stride(from: right, through: left, by: -1) {
                result[bottom][i] = num
                num += 1
            }
            bottom -= 1
            for i in stride(from: bottom, through: top, by: -1) {
                result[i][left] = num
                num += 1
            }
            left += 1
        }
        return result
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容