返回

Swift LeetCode 汇总区间 - 区间合并的高效算法

IOS

探索 Swift 的强大功能,深入剖析 LeetCode 汇总区间算法的精髓。本文将带领你踏上一次引人入胜的旅程,揭开区间合并背后的奥秘,并提供清晰易懂的代码示例。

简介

汇总区间算法旨在将无重复元素的有序整数数组中的连续数字合并为区间。例如,给定数组 [1, 2, 3, 4, 5, 7, 8, 9],算法将输出 [1-5, 7-9]

Swift 实现

1. 初始化区间

首先,创建一个包含起始和结束元素的区间结构体:

struct Interval {
    var start: Int
    var end: Int
}

2. 遍历数组

使用 for-in 循环遍历数组,并跟踪当前区间:

var intervals: [Interval] = []
var currentInterval = Interval(start: nums[0], end: nums[0])

for i in 1..<nums.count {
    // 如果当前元素与前一个元素相邻,则更新当前区间的结束元素
    if nums[i] == currentInterval.end + 1 {
        currentInterval.end = nums[i]
    } else {
        // 否则,将当前区间添加到数组中,并创建新的区间
        intervals.append(currentInterval)
        currentInterval = Interval(start: nums[i], end: nums[i])
    }
}

// 添加最后一个区间
intervals.append(currentInterval)

3. 返回结果

将区间的起始和结束元素转换为字符串数组,并返回合并后的区间:

var result: [String] = []
for interval in intervals {
    result.append("\(interval.start)-\(interval.end)")
}

return result

复杂度分析

  • 时间复杂度:O(n),其中 n 是数组的大小。算法遍历数组一次。
  • 空间复杂度:O(n),在最坏情况下,数组中的所有元素都不相邻,需要创建 n 个区间。

结论

通过 Swift 的优雅性和 LeetCode 的挑战性题目,我们深入探讨了汇总区间算法的原理和实现。通过清晰的代码示例和深入浅出的讲解,你掌握了区间合并的精髓,提升了在数据结构问题上的解决能力。愿这篇文章为你的编程之旅增添光彩,激发你对算法探索的无限热情!