Skip to content

Commit 189f641

Browse files
committed
solve problem
1 parent e88a7dd commit 189f641

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

clone-graph/delight010.swift

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
class Solution {
2+
// Time O(V+E)
3+
// Space O(V)
4+
func cloneGraph(_ node: Node?) -> Node? {
5+
guard let node = node else { return nil }
6+
7+
var visited: [Int: Node] = [:]
8+
var queue: [Node] = []
9+
10+
let firstNode = Node(node.val)
11+
visited[node.val] = firstNode
12+
13+
queue.append(node)
14+
15+
while !queue.isEmpty {
16+
let currentNode = queue.removeFirst()
17+
18+
for neighbor in currentNode.neighbors {
19+
guard let neighbor = neighbor else { continue }
20+
21+
if let clonedNeighbor = visited[neighbor.val] {
22+
visited[currentNode.val]!.neighbors.append(clonedNeighbor)
23+
} else {
24+
visited[neighbor.val] = Node(neighbor.val)
25+
visited[currentNode.val]!.neighbors.append(visited[neighbor.val])
26+
queue.append(neighbor)
27+
}
28+
}
29+
}
30+
31+
return firstNode
32+
}
33+
}
34+
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
// Time (MN)
3+
// Space (MN)
4+
func longestCommonSubsequence(_ text1: String, _ text2: String) -> Int {
5+
var dp = Array(repeating: Array(repeating: 0, count: text2.count + 1),
6+
count: text1.count + 1)
7+
for (i, char1) in text1.enumerated() {
8+
for (j, char2) in text2.enumerated() {
9+
if char1 == char2 {
10+
dp[i + 1][j + 1] = dp[i][j] + 1
11+
} else {
12+
dp[i + 1][j + 1] = max(dp[i + 1][j], dp[i][j + 1])
13+
}
14+
}
15+
}
16+
17+
return dp[text1.count][text2.count]
18+
}
19+
}
20+

0 commit comments

Comments
 (0)