From 4887862f5ebb85325b9995fe9f42f08e7b229aed Mon Sep 17 00:00:00 2001 From: delight010 Date: Wed, 1 Oct 2025 22:04:59 +0900 Subject: [PATCH 1/3] solve problem --- missing-number/delight010.swift | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 missing-number/delight010.swift diff --git a/missing-number/delight010.swift b/missing-number/delight010.swift new file mode 100644 index 000000000..d0e023ca8 --- /dev/null +++ b/missing-number/delight010.swift @@ -0,0 +1,14 @@ +class Solution { + // Time O(n) + // Space O(1) + func missingNumber(_ nums: [Int]) -> Int { + var sum = 0 + for i in 0.. Date: Fri, 3 Oct 2025 10:59:59 +0900 Subject: [PATCH 2/3] solve problem --- reorder-list/delight010.swift | 63 +++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 reorder-list/delight010.swift diff --git a/reorder-list/delight010.swift b/reorder-list/delight010.swift new file mode 100644 index 000000000..e7158dfff --- /dev/null +++ b/reorder-list/delight010.swift @@ -0,0 +1,63 @@ +public class ListNode { + public var val: Int + public var next: ListNode? + public init() { self.val = 0; self.next = nil; } + public init(_ val: Int) { self.val = val; self.next = nil; } + public init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; } +} + +class Solution { + // Time O(n) + // Space O(1) + func reorderList(_ head: ListNode?) { + guard let head = head, head.next != nil, head.next?.next != nil else { + return + } + + var slow = head + var fast = head + + while fast.next != nil && fast.next?.next != nil { + slow = slow.next! + fast = fast.next!.next! + } + + let secondHalf = slow.next + slow.next = nil + + let reversedSecondHalf = reverseList(secondHalf) + + mergeLists(head, reversedSecondHalf) + } + + private func reverseList(_ head: ListNode?) -> ListNode? { + var prev: ListNode? = nil + var current = head + + while current != nil { + let nextTemp = current?.next + current?.next = prev + prev = current + current = nextTemp + } + + return prev + } + + private func mergeLists(_ list1: ListNode?, _ list2: ListNode?) { + var first = list1 + var second = list2 + + while first != nil && second != nil { + let firstNext = first?.next + let secondNext = second?.next + + first?.next = second + second?.next = firstNext + + first = firstNext + second = secondNext + } + } +} + From 11f6cc65fd53fe4b059cb993b0eea3fa65a52041 Mon Sep 17 00:00:00 2001 From: delight010 Date: Fri, 3 Oct 2025 12:44:59 +0900 Subject: [PATCH 3/3] solve problem --- merge-intervals/delight010.swift | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 merge-intervals/delight010.swift diff --git a/merge-intervals/delight010.swift b/merge-intervals/delight010.swift new file mode 100644 index 000000000..6f938f5b3 --- /dev/null +++ b/merge-intervals/delight010.swift @@ -0,0 +1,31 @@ +class Solution { + // Time O(n log n) + // Space O(n) + func merge(_ intervals: [[Int]]) -> [[Int]] { + if intervals.count <= 1 { + return intervals + } + + let intervals = intervals.sorted { $0[0] <= $1[0] } + var answer: [[Int]] = [] + var currentInterval: [Int] = [] + + for i in 0..= currentInterval[0] && intervals[i][0] <= currentInterval[1] { + currentInterval = [currentInterval[0], max(currentInterval[1], intervals[i][1])] + } else { + answer.append(currentInterval) + currentInterval = intervals[i] + } + } + + answer.append(currentInterval) + + return answer + } +} +