题目
解题思路
- 选择一个数据结构--数组用来存储可到达0的所有节点,为便于编写首先需添加元素0;
- while循环持续遍历整个路径数组,将可到达的添加到数据结构中,记录添加的数量,用来跳出循环(左右指针遍历可能会缩减时间);
代码展示
class Solution {
public int minReorder(int n, int[][] connections) {
boolean[] road = new boolean[n];
road[0] = true;
int count = 1;
int ans = 0;
while (count < n){
for (int[] connection : connections) {
//可直接到达或经过其他节点到达
if (road[connection[1]]) {
if(road[connection[0]]){
continue;
}
road[connection[0]] = true;
count++;
} else if (road[connection[0]]) { //不可达则+1
ans++;
road[connection[1]] = true;
count++;
}
}
}
return ans;
}
}