diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 074. \345\220\210\345\271\266\345\214\272\351\227\264/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 074. \345\220\210\345\271\266\345\214\272\351\227\264/README.md" index 85910bed4d7ee..411c4a9817d23 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 074. \345\220\210\345\271\266\345\214\272\351\227\264/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 074. \345\220\210\345\271\266\345\214\272\351\227\264/README.md" @@ -188,6 +188,32 @@ public class Solution { } ``` +#### Swift + +```swift +class Solution { + func merge(_ intervals: [[Int]]) -> [[Int]] { + guard !intervals.isEmpty else { return [] } + + let intervals = intervals.sorted { $0[0] < $1[0] } + var result: [[Int]] = [] + + var currentInterval = intervals[0] + for interval in intervals.dropFirst() { + if currentInterval[1] < interval[0] { + result.append(currentInterval) + currentInterval = interval + } else { + currentInterval[1] = max(currentInterval[1], interval[1]) + } + } + result.append(currentInterval) + + return result + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 074. \345\220\210\345\271\266\345\214\272\351\227\264/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 074. \345\220\210\345\271\266\345\214\272\351\227\264/Solution.swift" new file mode 100644 index 0000000000000..3962b75d1c535 --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 074. \345\220\210\345\271\266\345\214\272\351\227\264/Solution.swift" @@ -0,0 +1,21 @@ +class Solution { + func merge(_ intervals: [[Int]]) -> [[Int]] { + guard !intervals.isEmpty else { return [] } + + let intervals = intervals.sorted { $0[0] < $1[0] } + var result: [[Int]] = [] + + var currentInterval = intervals[0] + for interval in intervals.dropFirst() { + if currentInterval[1] < interval[0] { + result.append(currentInterval) + currentInterval = interval + } else { + currentInterval[1] = max(currentInterval[1], interval[1]) + } + } + result.append(currentInterval) + + return result + } +}