节点间通路
# 📃 题目描述
题目链接:面试题 04.01. 节点间通路 (opens new window)
# 🔔 解题思路
有环图,所以需要存储已访问过的节点
class Solution {
public boolean findWhetherExistsPath(int n, int[][] graph, int start, int target) {
Map<Integer, List<Integer>> map = new HashMap<>();
for (int[] item : graph) {
int from = item[0];
int to = item[1];
map.putIfAbsent(from, new ArrayList<>());
if (!map.get(from).contains(to)) {
map.get(from).add(to);
}
}
boolean[] used = new boolean[n];
return dfs(start, target, map, used);
}
private boolean dfs(int start, int target, Map<Integer, List<Integer>> map, boolean[] used) {
used[start] = true;
if (start == target) {
return true;
}
List<Integer> neighbors = map.get(start);
if (neighbors == null) {
return false;
}
for (int neighbor : neighbors) {
if (!used[neighbor]) {
// neighbor 能否到 target
if (dfs(neighbor, target, map, used)) {
return true;
}
}
}
return false;
}
}
# 💥 复杂度分析
- 空间复杂度:
- 时间复杂度:
🎁 公众号

各位小伙伴大家好呀,叫我小牛肉就行,目前在读东南大学硕士,上方扫码关注公众号「飞天小牛肉」,与你分享我的成长历程与技术感悟~
帮助小牛肉改善此页面 (opens new window)
Last Updated: 2023/02/16, 11:27:10