diff --git a/non-overlapping-intervals/delight010.swift b/non-overlapping-intervals/delight010.swift new file mode 100644 index 000000000..c230fbdd8 --- /dev/null +++ b/non-overlapping-intervals/delight010.swift @@ -0,0 +1,22 @@ +class Solution { + // Time O(n log n) + // Space O(n) + func eraseOverlapIntervals(_ intervals: [[Int]]) -> Int { + if intervals.count < 2 { return 0 } + + var answer = 0 + let intervals = intervals.sorted { $0[1] < $1[1] } + var currentInterval = intervals[0] + + for i in 1.. ListNode? { + var slow: ListNode? = head + var fast: ListNode? = head + var prev: ListNode? + + for _ in 1...n { + fast = fast?.next + } + + while fast != nil { + prev = slow + slow = slow?.next + fast = fast?.next + } + + if prev != nil { + prev?.next = slow?.next + } else { + return head?.next + } + + return head + } +} + diff --git a/same-tree/delight010.swift b/same-tree/delight010.swift new file mode 100644 index 000000000..b54f19e29 --- /dev/null +++ b/same-tree/delight010.swift @@ -0,0 +1,37 @@ +public class TreeNode { + public var val: Int + public var left: TreeNode? + public var right: TreeNode? + public init() { self.val = 0; self.left = nil; self.right = nil; } + public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; } + public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) { + self.val = val + self.left = left + self.right = right + } +} + +class Solution { + // Time O(n) + // Space best O(log n) + // Space worst O(n) + func isSameTree(_ p: TreeNode?, _ q: TreeNode?) -> Bool { + return dfs(p, q) + } + + private func dfs(_ p: TreeNode?, _ q: TreeNode?) -> Bool { + if p == nil && q == nil { + return true + } + + guard let p = p else { return false } + guard let q = q else { return false } + + if p.val != q.val { + return false + } + + return dfs(p.left, q.left) && dfs(p.right, q.right) + } +} +