【Swift】LeetCode 54. 螺旋矩阵

54. 螺旋矩阵

题目描述

思路 and Swift 题解

这道题目还是比较有趣的,我们直接按照题意对螺旋数组的遍历进行模拟即可。

具体来说,每次大循环(完整地螺旋遍历一次数组的外圈)由四次小循环组成,分别是遍历数组的上、右、下、左四个部分。每遍历完一部分,就将相应部分的边界向中间靠拢一次,直到左边界大于右边界或上边界超出下边界,我们才停止遍历。

遍历时,将二维数组的值存储到一维数组当中即可。

完整的 Swift 题解:

swift 复制代码
class Solution {
    func spiralOrder(_ matrix: [[Int]]) -> [Int] {
        var m = matrix.count
        var n = matrix[0].count
        
        var ans = [Int]()
        
        var l = 0, r = n - 1, u = 0, d = m - 1
        
        while true {
            for i in l...r {
                ans.append(matrix[u][i])
            }
            u += 1
            if u > d {
                break
            }
            
            for i in u...d {
                ans.append(matrix[i][r])
            }
            r -= 1
            if l > r {
                break
            }
            
            for i in (l...r).reversed() {
                ans.append(matrix[d][i])
            }
            d -= 1
            if u > d {
                break
            }
            
            for i in (u...d).reversed() {
                ans.append(matrix[i][l])
            }
            l += 1
            if l > r {
                break
            }
        }
        
        return ans
    }
}
相关推荐
碎_浪2 天前
Mac 壁纸被 MDM 锁住?我做了个 2MB 的开源方案
macos·开源·swift
小牛不牛的程序员2 天前
开源一个 macOS 剪贴板「意图识别」工具——不只是存储,更是理解你复制了什么
macos·swift
apihz4 天前
经纬度制作高清卫星图片免费 API 接口详解
开发语言·ios·swift
00后程序员张5 天前
iOS 打包方式汇总 从 Xcode Archive 到轻量级工具链的 IPA 构建
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
sweet丶5 天前
Swift 黑魔法:`@dynamicMemberLookup`
swift·rxswift
大熊猫侯佩5 天前
SwiftUI 侦探笔记:iPhone 14 失踪的“刘海”与侯佩的像素诡计
swiftui·swift·apple
大熊猫侯佩5 天前
WWDC26 新 @ContentBuilder 修饰符:SwiftUI 终于有了户口本
swiftui·swift·wwdc
东坡肘子6 天前
当 Linux 成为“空气”:容器、Agent 与不再重要的“桌面之争” -- 肘子的 Swift 周报 #143
人工智能·swiftui·swift
wabil7 天前
【LVGL】滑动切换页面的界面优化实践
开发语言·ios·swift
东坡肘子13 天前
SPI 加入 Apple,Swift 迈向自举 -- 肘子的 Swift 周报 #142
人工智能·swiftui·swift