题目

解题思路

  1. 选择一个数据结构--数组用来存储可到达0的所有节点,为便于编写首先需添加元素0;
  2. 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;
    }
}
12-09 01:35