File tree Expand file tree Collapse file tree 3 files changed +95
-0
lines changed
non-overlapping-intervals
remove-nth-node-from-end-of-list Expand file tree Collapse file tree 3 files changed +95
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution {
2+ // Time O(n log n)
3+ // Space O(n)
4+ func eraseOverlapIntervals( _ intervals: [ [ Int ] ] ) -> Int {
5+ if intervals. count < 2 { return 0 }
6+
7+ var answer = 0
8+ let intervals = intervals. sorted { $0 [ 1 ] < $1 [ 1 ] }
9+ var currentInterval = intervals [ 0 ]
10+
11+ for i in 1 ..< intervals. count {
12+ if currentInterval [ 1 ] <= intervals [ i] [ 0 ] {
13+ currentInterval = intervals [ i]
14+ } else {
15+ answer += 1
16+ }
17+ }
18+
19+ return answer
20+ }
21+ }
22+
Original file line number Diff line number Diff line change 1+ public class ListNode {
2+ public var val : Int
3+ public var next : ListNode ?
4+ public init ( ) { self . val = 0 ; self . next = nil ; }
5+ public init ( _ val: Int ) { self . val = val; self . next = nil ; }
6+ public init ( _ val: Int , _ next: ListNode ? ) { self . val = val; self . next = next; }
7+ }
8+
9+ class Solution {
10+ // Time O(n)
11+ // Space O(1)
12+ func removeNthFromEnd( _ head: ListNode ? , _ n: Int ) -> ListNode ? {
13+ var slow : ListNode ? = head
14+ var fast : ListNode ? = head
15+ var prev : ListNode ?
16+
17+ for _ in 1 ... n {
18+ fast = fast? . next
19+ }
20+
21+ while fast != nil {
22+ prev = slow
23+ slow = slow? . next
24+ fast = fast? . next
25+ }
26+
27+ if prev != nil {
28+ prev? . next = slow? . next
29+ } else {
30+ return head? . next
31+ }
32+
33+ return head
34+ }
35+ }
36+
Original file line number Diff line number Diff line change 1+ public class TreeNode {
2+ public var val : Int
3+ public var left : TreeNode ?
4+ public var right : TreeNode ?
5+ public init ( ) { self . val = 0 ; self . left = nil ; self . right = nil ; }
6+ public init ( _ val: Int ) { self . val = val; self . left = nil ; self . right = nil ; }
7+ public init ( _ val: Int , _ left: TreeNode ? , _ right: TreeNode ? ) {
8+ self . val = val
9+ self . left = left
10+ self . right = right
11+ }
12+ }
13+
14+ class Solution {
15+ // Time O(n)
16+ // Space best O(log n)
17+ // Space worst O(n)
18+ func isSameTree( _ p: TreeNode ? , _ q: TreeNode ? ) -> Bool {
19+ return dfs ( p, q)
20+ }
21+
22+ private func dfs( _ p: TreeNode ? , _ q: TreeNode ? ) -> Bool {
23+ if p == nil && q == nil {
24+ return true
25+ }
26+
27+ guard let p = p else { return false }
28+ guard let q = q else { return false }
29+
30+ if p. val != q. val {
31+ return false
32+ }
33+
34+ return dfs ( p. left, q. left) && dfs ( p. right, q. right)
35+ }
36+ }
37+
You can’t perform that action at this time.
0 commit comments