当前位置: 首页 > news >正文

【LeetCode:1466. 重新规划路线 | DFS + 图 + 树】

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ DFS + 图 + 树
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

  • 1466. 重新规划路线

⛲ 题目描述

n 座城市,从 0 到 n-1 编号,其间共有 n-1 条路线。因此,要想在两座不同城市之间旅行只有唯一一条路线可供选择(路线网形成一颗树)。去年,交通运输部决定重新规划路线,以改变交通拥堵的状况。

路线用 connections 表示,其中 connections[i] = [a, b] 表示从城市 a 到 b 的一条有向路线。

今年,城市 0 将会举办一场大型比赛,很多游客都想前往城市 0 。

请你帮助重新规划路线方向,使每个城市都可以访问城市 0 。返回需要变更方向的最小路线数。

题目数据 保证 每个城市在重新规划路线方向后都能到达城市 0 。

示例 1:

在这里插入图片描述

输入:n = 6, connections = [[0,1],[1,3],[2,3],[4,0],[4,5]]
输出:3
解释:更改以红色显示的路线的方向,使每个城市都可以到达城市 0 。
示例 2:

在这里插入图片描述

输入:n = 5, connections = [[1,0],[1,2],[3,2],[3,4]]
输出:2
解释:更改以红色显示的路线的方向,使每个城市都可以到达城市 0 。
示例 3:

输入:n = 3, connections = [[1,0],[2,0]]
输出:0

提示:

2 <= n <= 5 * 10^4
connections.length == n-1
connections[i].length == 2
0 <= connections[i][0], connections[i][1] <= n-1
connections[i][0] != connections[i][1]

🌟 求解思路&实现代码&运行结果


⚡ DFS + 图 + 树

🥦 求解思路
  1. 给定的n个点,n−1条边构成的有向图,题目的要求是,重新规划路线,更改不能到达0的方向路线,最后求所有点到0点最小改变次数。
  2. 可以忽略边的方向,有向图直接变成了一棵树。需要改变某些边的方向使得每个点都可以访问到 0点,那么我们从0节点开始,通过dfs(son,father)来求解整个过程。
  3. 同时,在进行dfs之前,我们需要标记代价,connections原始方向使用1标记原方向的边,使用0标记反向边。
  4. 实现代码如下所示:
🥦 实现代码
class Solution {
    
    private ArrayList<int[]>[] list;
    
    public int minReorder(int n, int[][] connections) {
      this.list=new ArrayList[n];
      Arrays.setAll(list,e->new ArrayList<>());
      for(int[] conn:connections){
        list[conn[0]].add(new int[]{conn[1],1});
        list[conn[1]].add(new int[]{conn[0],0});
      }
      return dfs(0,-1);
    }

    public int dfs(int x,int father){
      int ans=0;
      for(int[] next:list[x]){
        if(father!=next[0]){
          ans+=next[1]+dfs(next[0],x);
        }
      }
      return ans;
    }

}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

相关文章:

  • 今日问题:解决最新Chrome和chromedriver版本对不上的问题
  • 算法设计与实现--动态规划篇
  • 外包干了2个月,技术倒退2年。。。
  • 最新版IDEA专业版大学生申请免费许可证教学(无需学校教育邮箱+官方途径+非破解手段)
  • 【Centos】在CentOS上搭建Squid代理服务器详解
  • 熬夜会秃头——Beta冲刺总结随笔
  • 基于jsp+servlet的图书管理系统
  • mybatis中<association> 和 <collection>
  • 12月7日作业
  • 使用K-means把人群分类
  • 无公网IP环境如何SSH远程连接Deepin操作系统
  • SSL证书代理
  • 一对一聊天
  • 优化记录 -- 记一次搜索引擎(SOLR)优化
  • Redis默认序列化方式乱码原因及解决办法
  • 【C/PTA —— 15.结构体2(课外实践)】
  • 基于spring boot电子商务系统
  • 维基百科文章爬虫和聚类:高级聚类和可视化
  • Query、BasicDBObject、BasicDBList查询mongodb不同使用方式
  • Linux 权限
  • 普京提议于15日在土耳其恢复俄乌直接谈判
  • 巴军事行动致印度70%电网瘫痪
  • 图忆|红场阅兵:俄罗斯30年来的卫国战争胜利日阅兵式
  • 习近平同俄罗斯总统普京茶叙
  • 越秀地产前4个月销售额约411.2亿元,达年度销售目标的34.1%
  • 上海启动万兆光网试点建设,助力“模速空间”跑出发展加速度