本文主要是介绍1466. 重新规划路线 --力扣 --JAVA,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
n
座城市,从0
到n-1
编号,其间共有n-1
条路线。因此,要想在两座不同城市之间旅行只有唯一一条路线可供选择(路线网形成一颗树)。去年,交通运输部决定重新规划路线,以改变交通拥堵的状况。路线用
connections
表示,其中connections[i] = [a, b]
表示从城市a
到b
的一条有向路线。今年,城市 0 将会举办一场大型比赛,很多游客都想前往城市 0 。
请你帮助重新规划路线方向,使每个城市都可以访问城市 0 。返回需要变更方向的最小路线数。
题目数据 保证 每个城市在重新规划路线方向后都能到达城市 0 。
解题思路
- 选择一个数据结构--数组用来存储可到达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]]) { //不可达则+1ans++;road[connection[1]] = true;count++;}}}return ans;}
}
这篇关于1466. 重新规划路线 --力扣 --JAVA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!