【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
    }
}
相关推荐
锐意无限1 天前
Swift 扩展归纳--- UIView
开发语言·ios·swift
文件夹__iOS1 天前
AsyncStream 进阶实战:SwiftUI 全局消息流极简实现
ios·swiftui·swift
fendoudexiaoniao_ios4 天前
iOS 列表拖拽cell排序
ios·swift
大熊猫侯佩5 天前
Swift 6 驱魔实录:揭开 Combine 与 @Sendable 的“血色契约”
swift·block·combine·preconcurrency·sendable·mainactor·isolation
初级代码游戏5 天前
iOS开发 SwiftUI 15:手势 拖动 缩放 旋转
ios·swiftui·swift
ujainu5 天前
Flutter + OpenHarmony 游戏开发进阶:虚拟摄像机系统——平滑跟随与坐标偏移
开发语言·flutter·游戏·swift·openharmony
初级代码游戏8 天前
iOS开发 SwiftUI 14:ScrollView 滚动视图
ios·swiftui·swift
初级代码游戏8 天前
iOS开发 SwitftUI 13:提示、弹窗、上下文菜单
ios·swiftui·swift·弹窗·消息框
zhyongrui8 天前
托盘删除手势与引导体验修复:滚动冲突、画布消失动画、气泡边框
ios·性能优化·swiftui·swift
zhangfeng11338 天前
CSDN星图 支持大模型微调 trl axolotl Unsloth 趋动云 LLaMA-Factory Unsloth ms-swift 模型训练
服务器·人工智能·swift