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

南昌网站建设模板服务商物流网站免费源码

南昌网站建设模板服务商,物流网站免费源码,影院wordpress,比亚迪电子股票Leetcode 1466. 重新规划路线#xff08;两种思路#xff1a;正难则反 DFS 无向图转有向图 / DFS 无向建图 设定权值 反向遍历#xff09;题目解法一#xff1a; 正难则反 DFS 无向图转有向图#xff1a;第 1 步#xff1a;先建立一个无向图 G0第 2 步#xff1a;从…Leetcode 1466. 重新规划路线两种思路正难则反 DFS 无向图转有向图 / DFS 无向建图 设定权值 反向遍历题目解法一 正难则反 DFS 无向图转有向图第 1 步先建立一个无向图 G0第 2 步从 0 开始走无向图 G0直到所有节点记录此时经过的所有边形成有向图 G1第 3 步建立原图的有向图 G2第 4 步遍历每个点记录 G2 改成 G1 需要修改的边数 edge 遍历每个点 p将 G1 从 p 可以转到的点放入 set遍历 G2 从 p 可以转移到的点去 map 中删除不在 set 则不删set 剩下的元素个数则是 G2 需要修改的个数 此边数为重新规划后的反向图应该修改的边数注意仅有一种修改结果第 5 步答案就是total(即 n-1) - edge时间复杂度On空间复杂度On 代码一 /*** 正难则反 DFS 无向图转有向图** 第 1 步* 先建立一个无向图 G0** 第 2 步* 从 0 开始走无向图 G0直到所有节点* 记录此时经过的所有边形成有向图 G1** 第 3 步* 建立原图的有向图 G2** **第 4 步*** 遍历每个点记录 G2 改成 G1 需要修改的边数 edge* * 遍历每个点 p* * 将 G1 从 p 可以转到的点放入 set* * 遍历 G2 从 p 可以转移到的点去 map 中删除不在 set 则不删* * set 剩下的元素个数则是 G2 需要修改的个数* 此边数为重新规划后的**反向图**应该修改的边数* 注意仅有一种修改结果** 第 5 步* 答案就是total(即 n-1) - edge* 时间复杂度On空间复杂度On**/public int minReorder(int n, int[][] connections) {// 先建立一个无向图 G0ListInteger[] treeList0 buildTree(n, connections);// 从 0 开始走无向图直到所有节点记录此时经过的所有边形成有向图 G1ListInteger[] treeList1 new ArrayList[n];for (int i 0; i n; i) {treeList1[i] new ArrayList();}dfsTraversalTree(0, -1, treeList0, treeList1);// 建立原图的有向图 G2ListInteger[] treeList2 buildDirectedTree(n, connections);// 遍历每个点记录 G2 改成 G1 需要修改的边数 edgeint res 0;SetInteger pointSet new HashSet();for (int i 0; i n; i) {for (int point : treeList1[i]) {pointSet.add(point);}for (int point : treeList2[i]) {pointSet.remove(point);}res pointSet.size();pointSet.clear();}return n - 1 - res;}/*** 建立有向图*/private ListInteger[] buildDirectedTree(int n, int[][] edges) {ListInteger[] edgeList new ArrayList[n];for (int i 0; i n; i) {edgeList[i] new ArrayList();}for (int i 0; i edges.length; i) {int u edges[i][0];int v edges[i][1];edgeList[u].add(v);}return edgeList;}/*** 从 0 开始走无向图直到所有节点记录此时经过的所有边形成有向图 G1*/private void dfsTraversalTree(int son, int father, ListInteger[] treeList0, ListInteger[] treeList1) {for (int next : treeList0[son]) {if (next ! father) {treeList1[son].add(next);dfsTraversalTree(next, son, treeList0, treeList1);}}}/*** 建立无向图*/private ListInteger[] buildTree(int n, int[][] edges) {ListInteger[] edgeList new ArrayList[n];for (int i 0; i n; i) {edgeList[i] new ArrayList();}for (int i 0; i edges.length; i) {int u edges[i][0];int v edges[i][1];edgeList[u].add(v);edgeList[v].add(u);}return edgeList;}解法二 DFS 无向建图 设定权值 反向遍历:第 1 步建立无向图 G注意无环无重边将正向边权值设为 1反向边权值设为 0第 2 步从 0 开始走到所有的点记录权值总和就是结果因为走的是需要结果的反向图需要所有点到 0因此走到正向边代表此边需要反转、走到反向边则不需要时间复杂度On空间复杂度On 代码二 /*** DFS 无向建图 设定权值 反向遍历:** 第 1 步* 建立无向图 G注意无环无重边* 将正向边权值设为 1反向边权值设为 0** 第 2 步* 从 0 开始走到所有的点记录权值总和就是结果* 因为走的是需要结果的反向图需要所有点到 0因此走到正向边代表此边需要反转、走到反向边则不需要* 时间复杂度On空间复杂度On**/public int minReorder(int n, int[][] connections) {// 建无向图将正向边权值设为 1反向边权值设为 0ListPairInteger, Integer[] treeWeightList buildWeightTree(n, connections);// 从 0 开始走到所有的点记录权值总和就是结果return dfsTraversalWeightTree(0, -1, treeWeightList);}/*** 从 0 开始走到所有的点记录权值总和就是结果*/private int dfsTraversalWeightTree(int son, int father, ListPairInteger, Integer[] treeList) {int res 0;for (PairInteger, Integer nextPair : treeList[son]) {int next nextPair.getKey();int weight nextPair.getValue();if (next ! father) {res weight dfsTraversalWeightTree(next, son, treeList);}}return res;}/*** 建无向图将正向边权值设为 1反向边权值设为 0*/private ListPairInteger, Integer[] buildWeightTree(int n, int[][] edges) {ListPairInteger, Integer[] edgeList new ArrayList[n];for (int i 0; i n; i) {edgeList[i] new ArrayList();}for (int i 0; i edges.length; i) {int u edges[i][0];int v edges[i][1];edgeList[u].add(new Pair(v, 1));edgeList[v].add(new Pair(u, 0));}return edgeList;}
http://wiki.neutronadmin.com/news/211493/

相关文章:

  • 个性化的个人网站简易网站 动态内容加速
  • 自主建站是什么意思百度官方网站入口
  • 刷赞抖音推广网站企业网站建站意义
  • h5营销型网站创立网站
  • 大连做网站企业国外代理服务器免费
  • 做电影网站需要什么条件自己做网站怎么赚钱
  • 国外网站谷歌seo推广中国建设工程项目网
  • 西安手机网站建设公司wordpress 金融 模板下载
  • 进下加强新闻宣传网站建设做购物网站公司
  • 影响网站速度吗网站建设每年有维护费吗
  • 做网站多少钱?wordpress hide title plugin
  • 怎样做类似淘宝网的网站网站开发使用哪种工具好
  • 正版素材网站连云港关键字优化案例
  • 建设厅投诉网站首页住房和城乡建设部监理工程师网站
  • 网站开发维护费计入什么科目wordpress 新闻资讯
  • 长垣做网站网站解析后几天可以访问
  • 视差网站个人做网站设计
  • 茂名网站建设解决方案网站建设流程代理商
  • 全国美容网站建设陕西网站建设公司找哪家
  • 备案网站简介怎么写阿里巴巴网站建设教程
  • 一流的商城网站建设建设企业资质双网是哪两个网站
  • 宁夏住房和城乡建设厅门户网站网页预览手机网站效果
  • 到位app做网站需要些程序富阳网站优化
  • 做网站搞流量平台设计公司
  • 大岭山网站仿做怎么做响应式网站
  • wordpress个人下载网站模板吴江注册公司
  • 网站推广运营网站开发ssh
  • 59网站一起做网店电子商务网站设计目的及要求
  • 自己搭建的ftp怎么做网站网站域名免费注册
  • 网站建设公司的销售好做吗网络营销外包平台