Re: [閒聊] 每日leetcode

看板 Marginalman
作者 Rushia (早瀬ユウカの体操服 )
時間 2025-05-31 02:29:30
留言 0則留言 (0推 0噓 0→)

https://leetcode.com/problems/find-closest-node-to-given-two-nodes 2359. Find Closest Node to Given Two Nodes 給你一個陣列表示有向圖的邊,每個點最多只會有一個向外的邊,給你兩個整數node1和 node2,找出一個節點node1和node2都可以到,且兩個點到的距離取最大最小的結果,如 果無解返回-1。 思路: 1.用BFS求出每個點的最短距離,然後取最大最小即可。 Java Code: --------------------------------------- class Solution { public int closestMeetingNode(int[] edges, int node1, int node2) { int[] dis1 = getDis(edges, node1); int[] dis2 = getDis(edges, node2); int res = -1; int min = Integer.MAX_VALUE; for (int i = 0; i < edges.length; i++) { if (dis1[i] == Integer.MAX_VALUE || dis2[i] == Integer.MAX_VALUE) { continue; } int max = Math.max(dis1[i], dis2[i]); if (max < min) { min = max; res = i; } } return res; } private int[] getDis(int[] edges, int id) { int[] dis = new int[edges.length]; Arrays.fill(dis, Integer.MAX_VALUE); dis[id] = 0; Queue<Integer> queue = new ArrayDeque<>(); queue.offer(id); while (!queue.isEmpty()) { int cur = queue.poll(); int next = edges[cur]; if (next == -1 || dis[next] != Integer.MAX_VALUE) { continue; } dis[next] = dis[cur] + 1; queue.offer(next); } return dis; } } --------------------------------------- -- https://i.imgur.com/ZUx84aU.jpeg --
※ 批踢踢實業坊(ptt.cc), 來自: 49.159.104.111 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1748629773.A.1E3.html

您可能感興趣