12.LeetCode刷题For Swift·59. Spiral Matrix II螺旋矩阵II

1、原题

给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

示例:

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

2、思路

理解了这个题的逻辑,方法就很简单了,主要还是确定上下左右边界,一条边一条边填充。

3、代码

class Solution {
    func generateMatrix(_ n: Int) -> [[Int]] {
        // 定义上下左右边界,
        var top = 0
        var right = n - 1
        var bottom = n - 1
        var left = 0
        // 返回结果
        var result = [[Int]](repeating: [Int](repeating: 0, count: n), count:n)
        // 初始值从1开始
        var num = 1
        // 结束值
        let target = n * n
        while num <= target {
            // 从左到右从上倒下开始排列
            for i in stride(from: left, through: right, by: 1) {
                result[top][i] = num
                num += 1
            }
            // 排完一列,内缩
            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
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容