Skip to main content

2359.js

/** ------------------------------------------------------------------------------
*
* 2359. Find Closest Node to Given Two Nodes
* Topics: Graph, DFS
* https://leetcode.com/problems/find-closest-node-to-given-two-nodes/?envType=daily-question&envId=2025-05-30
*
------------------------------------------------------------------------------ */
var closestMeetingNode = function (edges, node1, node2) {
const n = edges.length
const map1 = Array(n).fill(-1)
const map2 = Array(n).fill(-1)

const dfs = (start, dist) => {
let curr = start
let d = 0
while (curr !== -1 && dist[curr] === -1) {
dist[curr] = d++
curr = edges[curr]
}
}

dfs(node1, map1)
dfs(node2, map2)

let result = -1
let minDist = Infinity

for (let i = 0; i < n; i++) {
if (map1[i] !== -1 && map2[i] !== -1) {
const maxDist = Math.max(map1[i], map2[i])
if (maxDist < minDist || (maxDist === minDist && i < result)) {
minDist = maxDist
result = i
}
}
}

return result
}

console.log(closestMeetingNode([2, 2, 3, -1], 0, 1))