Skip to content

Commit f30ef10

Browse files
Create 743-Network-Delay-Time.js
Dijkstra's with a Min-Heap in JavaScript, with the same pattern as the YouTube video. 😁
1 parent 3ea4354 commit f30ef10

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

javascript/743-Network-Delay-Time.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/**
2+
* @param {number[][]} times
3+
* @param {number} n
4+
* @param {number} k
5+
* @return {number}
6+
*/
7+
var networkDelayTime = function (times, n, k) {
8+
9+
let time_taken = 0;
10+
const visited_set = new Set();
11+
const min_heap = new MinPriorityQueue();
12+
const node_edge_cost = new Map();
13+
14+
for (const [node, edge, cost] of times) {
15+
let edges = [];
16+
if (node_edge_cost.has(node)) {
17+
edges = node_edge_cost.get(node);
18+
}
19+
edges.push([edge, cost]);
20+
node_edge_cost.set(node, edges);
21+
}
22+
23+
min_heap.enqueue([k, 0], 0);
24+
25+
while (min_heap.size()) {
26+
27+
const [node, cost] = min_heap.dequeue().element;
28+
29+
if (visited_set.has(node)) continue;
30+
visited_set.add(node);
31+
32+
time_taken = Math.max(cost, time_taken);
33+
34+
const node_edges = node_edge_cost.get(node) || [];
35+
36+
for (const [edge_node, edge_cost] of node_edges) {
37+
if (!visited_set.has(edge_node)) {
38+
min_heap.enqueue([edge_node, edge_cost + cost], edge_cost + cost);
39+
}
40+
}
41+
}
42+
43+
return visited_set.size === n ? time_taken : -1;
44+
};

0 commit comments

Comments
 (0)