LeetCode-#59スパイラルマトリックスII

一緒に書く習慣をつけましょう!「ナゲッツデイリーニュープラン・4月アップデートチャレンジ」に参加して4日目です。クリックしてイベントの詳細をご覧ください

序文

私たちのコミュニティは、Gu Yi(Netflixの成長ハッカー、「The Way of the iOS Interview」の著者、ACEプロのフィットネスコーチ)のSwiftアルゴリズムの問​​題解決策を、誰もが学び、読むことができるテキストバージョンにまとめていきます。

これまでにLeetCodeアルゴリズムの58の問題を更新し、更新の時間と進捗状況を維持します(月曜日、水曜日、金曜日の午前9時にリリースされます)。大幅な改善があります。

小さな一歩を積み上げないと、千マイルも行けません。小さな小川を積み上げなければ、川を作ることはできません。Swiftコミュニティは、前進するためにあなたを伴います。提案やコメントがあれば、記事の最後にメッセージを残してください。私たちはあなたのニーズを満たすために最善を尽くします。

難易度:中

1.説明

正の整数が与えられた場合、要素が時計回りにらせん状に配置されたすべての要素を含む正方n生成1ます。n2n x nmatrix

2.例

例1

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
复制代码

例2

输入:n = 1
输出:[[1]]
复制代码

制限:

  • 1 <= n <= 20

3.回答

class SpiralMatrixII {
    func generateMatrix(_ n: Int) -> [[Int]] {
        guard n > 0 else {
            return [[Int]]()
        }
    
        var num = 1
        var res = Array(repeating: Array(repeating: 0, count: n), count: n)
        
        for layer in 0..<n / 2 {
            let start = layer
            let end = n - layer - 1
            
            // top
            for i in start..<end {
                res[start][i] = num
                num += 1
            }
            
            // right
            for i in start..<end {
                res[i][end] = num
                num += 1
            }
            
            // bottom
            for i in stride(from: end, to: start, by: -1) {
                res[end][i] = num
                num += 1
            }
            
            // left
            for i in stride(from: end, to: start, by: -1) {
                res[i][start] = num
                num += 1
            }
        }
        
        // handle the center one
        if n % 2 != 0 {
            res[n / 2][n / 2] = n * n
        }
        
        return res
    }
}
复制代码
  • 主なアイデア:時計回りに始め、数字を記入し、真ん中の数字に対処することを忘れないでください。
  • 時間計算量:O(n ^ 2)
  • スペースの複雑さ:O(1)

アルゴリズムソリューションのリポジトリ:LeetCode-Swift

クリックしてLeetCodeの練習に進みます

私たちに関しては

私たちはSwift愛好家によって共同で維持されており、Swift戦闘、SwiftUI、Swift財団を中心とした技術コンテンツを共有し、優れた学習資料を整理して収集します。

おすすめ

転載: juejin.im/post/7083699846741229576