Skip to content

Commit 72e1b1b

Browse files
authored
Create find-closest-node-to-given-two-nodes.py
1 parent 7543911 commit 72e1b1b

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Time: O(n)
2+
# Space: O(n)
3+
4+
# hash table
5+
class Solution(object):
6+
def closestMeetingNode(self, edges, node1, node2):
7+
"""
8+
:type edges: List[int]
9+
:type node1: int
10+
:type node2: int
11+
:rtype: int
12+
"""
13+
def dfs(node):
14+
lookup = {}
15+
i = 0
16+
while node != -1:
17+
if node in lookup:
18+
break
19+
lookup[node] = i
20+
i += 1
21+
node = edges[node]
22+
return lookup
23+
24+
lookup1, lookup2 = dfs(node1), dfs(node2)
25+
intersect = set(lookup1.iterkeys())&set(lookup2.iterkeys())
26+
return min(intersect, key=lambda x: (max(lookup1[x], lookup2[x]), x)) if intersect else -1

0 commit comments

Comments
 (0)