bumpsoo 2025-05-30 13:18:57 +00:00
parent 099ac0388d
commit 7763227f07

View file

@ -0,0 +1,31 @@
# https://leetcode.com/problems/find-closest-node-to-given-two-nodes
from typing import List
class Solution:
def closestMeetingNode(self, edges: List[int], node1: int, node2: int) -> int:
node1_dist = [-1] * len(edges)
node2_dist = [-1] * len(edges)
def traverse(node, edges, dist_list):
dist = 0
dist_list[node] = 0
while edges[node] != -1:
node = edges[node]
dist += 1
if dist_list[node] != -1:
break
dist_list[node] = dist
traverse(node1, edges, node1_dist)
traverse(node2, edges, node2_dist)
result = -1
now = float('inf')
for i in range(len(edges)):
if node1_dist[i] == -1 or node2_dist[i] == -1:
continue
if now > max(node1_dist[i], node2_dist[i]):
result = i
now = max(node1_dist[i], node2_dist[i])
return result