【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
    }
}
相关推荐
东坡肘子9 小时前
OpenClaw 不错,但我好像没有那么需要 -- 肘子的 Swift 周报 #125
人工智能·swiftui·swift
Swift社区5 天前
LeetCode 391 完美矩形 - Swift 题解
算法·leetcode·swift
升讯威在线客服系统6 天前
从 GC 抖动到稳定低延迟:在升讯威客服系统中实践 Span 与 Memory 的高性能优化
java·javascript·python·算法·性能优化·php·swift
Swift社区6 天前
LeetCode 390 消除游戏 - Swift 题解
leetcode·游戏·swift
东坡肘子7 天前
春晚、机器人、AI 与 LLM -- 肘子的 Swift 周报 #124
人工智能·swiftui·swift
BatmanWayne10 天前
swift-微调补充
人工智能·swift
疯笔码良14 天前
【swiftUI】实现自定义的底部TabBar组件
ios·swiftui·swift
东坡肘子15 天前
祝大家马年新春快乐! -- 肘子的 Swift 周报 #123
人工智能·swiftui·swift
BatmanWayne15 天前
swift微调记录
微调·swift
追夢秋陽16 天前
Cocoa 使用NSCollectionView显示列表,数据不足布局异常处理
macos·objective-c·cocoa·swift·collectionview