【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;}}
🥦 運行結果

在這里插入圖片描述


💬 共勉

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

在這里插入圖片描述

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/208291.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208291.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208291.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue 子路由頁面發消息給主路由頁面 ,實現主頁面顯示子頁面的信息

需求 子頁面進入后&#xff0c;能在主頁面顯示子頁的相關信息&#xff0c;比如說主頁面的菜單激活的是哪個子頁面的菜單項 如上圖&#xff0c;當刷新瀏覽器頁面時&#xff0c;讓菜單的激活項仍保持在【最近瀏覽】。 實現方式&#xff1a; 在子頁面的create事件中增加&#xff…

Java File類詳解(下)練習一

練習 第一題 需求&#xff1a;在當前模塊下的aaa文件夾中創建一個a.txt文件 import java.io.File; import java.io.IOException;public class FileExer01 {public static void main(String[] args) throws IOException {File f1 new File("AllInOne\\aaa");f1.mk…

docker-compose腳本編寫關鍵詞詳解

docker-compose腳本編寫高頻關鍵詞&#xff08;一&#xff09; 此處關鍵詞應該必須能靈活運用 關鍵詞 解釋 例子 version 定義使用的docker-compose文件版本。較新的版本支持更豐富的功能和選項。 version: 3.8 services 定義應用程序的各個服務及其配置。每個服務通常…

Vue:繪制圖例

本文記錄使用Vue框架繪制圖例的代碼片段。 可以嵌入到cesium視圖中,也可以直接繪制到自己的原生系統中。 一、繪制圖例Vue組件 <div v-for="(color, index) in colors" :key="index" class="legend-item"><div class="color-…

深度學習還可以從如下方面進行創新!!

文章目錄 一、我認為可以從如下5個方向進行創新總結 一、我認為可以從如下5個方向進行創新 新的模型結構&#xff1a;盡管現在的深度學習模型已經非常強大&#xff0c;但是還有很多未被探索的模型結構。探索新的模型結構可以帶來更好的性能和更低的計算成本。 新的優化算法&a…

JavaScript數組面試題

JavaScript數組面試題 創建一個包含多個元素的數組&#xff0c;并打印輸出數組的內容。 const array ["apple", "banana", "orange"]; console.log(array);如何訪問數組中的特定元素&#xff1f; const array ["apple", "banan…

JS判斷數組中是否包含某個值

方法一&#xff1a;array.indexOf 此方法判斷數組中是否存在某個值&#xff0c;如果存在&#xff0c;則返回數組元素的下標&#xff0c;否則返回-1。 var arr[1,2,3,4]; var indexarr.indexOf(3); console.log(index);方法二&#xff1a;array.includes(searcElement[,fromIn…

一個簡單的postman設置斷言,為何會難住一個工作5年的測試?

postman設置斷言 作為一款接口測試工 具&#xff0c;postman需要對發送請求后返回的結果是否正確做驗證&#xff0c;在postman中通過 tests頁簽做請求的驗證&#xff0c;也稱為斷言。 postman設置斷言的流程 1、在tests頁簽截取要對比的實際響應信息&#xff08;響應頭、響應…

眼花繚亂的ADN/ADX/DSP/DMP/SSP和他們的關系鏈

做過互聯網廣告尤其是程序化廣告的同學都遇到過以下這些名詞&#xff0c;或許正被他們折磨的焦頭爛額&#xff0c;這篇文章&#xff0c;我們就來說說這些概念的含義及他們之間的關系鏈。 ADN&#xff1a;AD Network——廣告網絡或廣告聯盟。連接廣告主和媒體的中間商。 ADX&…

stm32串口編程實例-實現數據的收發功能

大家好&#xff0c;今天給大家介紹stm32串口編程實例&#xff0c;文章末尾附有分享大家一個資料包&#xff0c;差不多150多G。里面學習內容、面經、項目都比較新也比較全&#xff01;可進群免費領取。 串口是USART(通用同步/異步收發器)的俗稱。 實際上&#xff0c;串行總線并不…

2023年8月8日 Go生態洞察:Go 1.21 版本發布探索

&#x1f337;&#x1f341; 博主貓頭虎&#xff08;&#x1f405;&#x1f43e;&#xff09;帶您 Go to New World?&#x1f341; &#x1f984; 博客首頁——&#x1f405;&#x1f43e;貓頭虎的博客&#x1f390; &#x1f433; 《面試題大全專欄》 &#x1f995; 文章圖文…

中小企業都在用哪些開源項目管理工具?分享15款

推薦15個優秀的開源項目管理工具&#xff0c;比如&#xff1a;ProjectLibre、OpenProject、ERPNext、Redmine、禪道、Tuleap、Restyaboard等。 項目經理面臨各種復雜任務&#xff0c;包括追蹤任務的進度、評估交付風險和管理整體工作量。為了順利達成目標&#xff0c;一款靠譜的…

ALLEGRO PCB 如何設置增加的過孔

Allegro添加過孔 1、首先建立焊盤&#xff08;熱風焊盤&#xff09; Via20x10mil(tr30x45x12mil_45) 2、設置過孔的焊盤 Setup-->Constraints&#xff08;約束&#xff09;-->Physical 彈出以下對話框Allegro Constraint Manager 可以通過右鍵點擊PC S&#xff08;…

ArchLinux下載鏈接

LINUX花樣太多&#xff0c;不得不跟著別人要求。 Arch Linux - Downloads Index of /archlinux/iso/2023.12.01/

學習IO的第四天

作業 : 使用兩個子進程完成兩個文件的拷貝&#xff0c;子進程1拷貝前一半內容&#xff0c;子進程2拷貝后一般內容&#xff0c;父進程用于回收兩個子進程的資源 #include <head.h>int main(int argc, const char *argv[]) {int rd -1;if((rdopen("./01_test.c&quo…

零基礎如何入門HarmonyOS開發?

HarmonyOS鴻蒙應用開發是當前非常熱門的一個領域&#xff0c;許多人都想入門學習這個技術。但是&#xff0c;對于零基礎的人來說&#xff0c;如何入門確實是一個問題。下面&#xff0c;我將從以下幾個方面來介紹如何零基礎入門HarmonyOS鴻蒙應用開發學習。 一、了解HarmonyOS鴻…

[JSMSA_CTF] 2023年12月練習題 pwn

一開始沒給附件&#xff0c;還以為是3個盲pwn結果&#xff0c;pwn了一晚上沒出來&#xff0c;今天看已經有附件了。 pwn1 在init_0里使用mallopt(1,0) 設置global_max_fast0 任何塊釋放都會進入unsort在free函數里沒有清理指針&#xff0c;有UAF將v6:0x100清0&#xff0c;便于…

甘草書店:#10 2023年11月24日 星期五 「麥田創業分享2—世界奇奇怪怪,請保持可可愛愛」

今日繼續分享麥田創業經驗。 如果你問我&#xff0c;創業過程中是否想過放棄。那么答案是&#xff0c;有那么一次。 那時想要放棄的原因并不是辛苦沒有回報&#xff0c;或是資金短缺&#xff0c;而是沒能理解“異見者”。 其實事情非常簡單&#xff0c;現在反觀那時的自己&a…

實例解析關于兔鮮登錄tab欄切換案例詳細講解!

文章目錄 文章目錄 效果圖展示 整體制作的一個思路 代碼展示 技術細節 小結 效果圖展示 點擊賬戶登錄顯示登錄的模塊&#xff0c;點擊二維碼登錄顯示二維碼的模塊 整體制作的一個思路 點擊哪個模塊哪個顯示&#xff0c;另外一個模塊讓它隱藏即可&#xff01; 代碼展示 <!…

好萊塢明星識別

一、前期工作 1. 設置GPU from tensorflow import keras from tensorflow.keras import layers,models import os, PIL, pathlib import matplotlib.pyplot as plt import tensorflow as tfgpus tf.config.list_physical_devices("GPU")if gpus:gpu0 …