|
1 |
| - |
2 | 1 | /**
|
3 | 2 | * @param {number} n
|
4 | 3 | * @param {number[][]} edges
|
5 | 4 | * @param {number} source
|
6 | 5 | * @param {number} destination
|
7 | 6 | * @return {boolean}
|
8 | 7 | */
|
9 |
| -var validPath = function(n, edges, source, destination) { |
| 8 | +var validPath = function (n, edges, source, destination) { |
10 | 9 |
|
11 |
| - if (edges.length == 0) return true; |
12 |
| - let map = new Map(); |
| 10 | + if (!edges.length) return true; |
| 11 | + const map = new Map(); |
13 | 12 | for (let i = 0; i < edges.length; i++) {
|
14 |
| - let [node, next] = edges[i]; |
15 |
| - if (!map.has(node)) map.set(node, []); |
16 |
| - if (!map.has(next)) map.set(next, []); |
17 |
| - map.get(node).push(next); |
18 |
| - map.get(next).push(node); |
| 13 | + const [start, end] = edges[i]; |
| 14 | + if (!map.has(start)) map.set(start, []); |
| 15 | + if (!map.has(end)) map.set(end, []); |
| 16 | + map.get(start).push(end); |
| 17 | + map.get(end).push(start); |
19 | 18 | }
|
20 |
| - let queue = []; |
| 19 | + let queue = [...map.get(source)]; |
21 | 20 | let visited = new Set();
|
22 |
| - queue.push(source); |
23 |
| - while(queue.length > 0) { |
| 21 | + |
| 22 | + while (queue.length > 0) { |
24 | 23 | let cur = queue.pop();
|
25 |
| - for (const element of map.get(cur)) { |
26 |
| - if (element === destination) return true; |
27 |
| - if (!visited.has(element)) { |
28 |
| - visited.add(element); |
29 |
| - queue.push(element); |
30 |
| - } |
| 24 | + if (cur == destination) return true; |
| 25 | + if (!visited.has(cur)) { |
| 26 | + visited.add(cur); |
| 27 | + let list = map.get(cur); |
| 28 | + queue.push(...list) |
31 | 29 | }
|
32 | 30 | }
|
33 | 31 | return false;
|
|
0 commit comments