算法優選系列(9.BFS 解決拓撲排序)

目錄

拓撲排序簡介:

?編輯

課程表(medium):

課程表II(medium):

火星詞典(hard):


拓撲排序簡介:

  • 有向無環圖(DAG圖)

如上圖每條邊都有方向即為有向,任意幾個點與邊都不能形成一個環即為無環。

入度:即一個頂點有幾個邊指向它

出度:即一個頂點有幾個邊指向其他頂點

  • AOV網:頂點活動圖

在有向無環圖中,用頂點表示一個活動,用邊來表示向后順序的圖結構?

  • 拓撲排序

(在這里理解為找到做事情的先后順序,拓撲排序的結果可能不唯一)

如何排序?

1.?找出圖中入度為0的點然后輸出

2. 刪除與該點鏈接的點

3. 重復1 2操作直到圖中沒有點 或者 沒有入度為0的點(有可能有環,因此另一個拓撲排序應用就是判斷圖中是否有環)

... ...

  • 實現拓撲排序??

借助隊列,來一次BFS

1. 初始化:把所有入度為0的點加入隊列

2. 當隊列不為空的時候:

????????a. 拿出隊頭元素,加入最終結果

? ? ? ? b. 刪除與該元素相鄰的邊

? ? ? ? c. 判斷:與刪除邊相鄰的點,是否入度變成零

? ? ? ? ? ? ? ? ? ? ? ? ? 如果入度為0加入隊列

建圖:第一題講

課程表(medium):

題目鏈接:207. 課程表 - 力扣(LeetCode)


算法:

原問題可以轉換成?個拓撲排序問題。
用BFS 解決拓撲排序即可。
拓撲排序流程:
  • 將所有入度為 0 的點加入到隊列中;
  • 當隊列不空的時候,一直循環:
  1. 取出隊頭元素;
  2. 將于隊頭元素相連的頂點的入度 - 1;
  3. 然后判斷是否減成 0,。如果減成 0,就加?到隊列中。

eg:?

?

課程表II(medium):

題目鏈接:210. 課程表 II - 力扣(LeetCode)

算法:

和上題一樣~


火星詞典(hard):

題目鏈接:LCR 114. 火星詞典 - 力扣(LeetCode)

算法:

將題意搞清楚之后,這道題就變成了判斷有向圖時候有環,可以?拓撲排序解決。
如何搜集信息(如何建圖):
  1. 兩層 for 循環枚舉出所有的兩個字符串的組合;
  2. 然后利?指針,根據字典序規則找出信息。

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

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

相關文章

SpringBoot3+Vue3(1)-后端 請求頭校驗,jwt退出登錄,mybaits實現數據庫用戶校驗

1.后端:jwt請求頭校驗 解析 工具類jwtUtils 解析token 令牌是否過期,驗證 正常、異常、運行時錯誤 倒入工具類是resource 工具類中添加解析用戶的方法: 在 在工具類添加id解析 此處調用 添加controller做測試 測試&…

【免殺】C2免殺技術(八)APC注入

本文主要寫點自己的理解,如有問題,請諸位指出! 概念和流程 “APC注入”(APC Injection)是免殺與惡意代碼注入技術中的一種典型方法,主要用于在目標進程中遠程執行代碼,常見于后門、遠控、植入型…

git工具使用

安裝Git 在開始使用Git之前,需要在本地計算機上安裝Git工具。Git支持Windows、macOS和Linux系統。可以從Git官方網站下載適合操作系統的安裝包,并按照安裝向導進行安裝。 bash復制插入 # 在Linux上安裝Git sudo apt-get install git# 在macOS上安裝Git…

SpringBoot微服務編寫Dockerfile流程及問題匯總

背景 跟 Docker 磕了兩天,將一個包含 N 個微服務的應用部署包改造,使其能夠生成 Docker 鏡像,并在 Docker 容器中運行。幾年前玩過 Docker,隱約記得幾個命令「Dockerfile 命令:黑卡飲料、山楂果費、哦SUV,…

pytorch語法學習

啟動 python main.py --config llve.yml --path_y test -i output

基于LiveData和ViewModel的路線管理實現(帶PopupWindow刪除功能)

包含RecyclerView綁定、PopupWindow刪除功能和SharedPreferences持久化存儲。 1. RouteInfo類(實現Parcelable接口) java 復制 下載 import android.os.Parcel; import android.os.Parcelable;public class RouteInfo implements Parcelable {private Integer routeID;p…

jvm安全點(二)openjdk17 c++源碼垃圾回收安全點信號函數處理線程阻塞

1. 信號處理與樁代碼(Stub)?? 當線程訪問安全點輪詢頁(Polling Page)時: ??觸發 SIGSEGV 信號??:訪問只讀的輪詢頁會引發 SIGSEGV 異常。??信號處理函數??:pd_hotspot_signal_handl…

如何用數據可視化提升你的決策力?

在數字化浪潮席卷全球的當下,數據已然成為企業和組織發展的核心資產。然而,單純的數據堆積猶如未經雕琢的璞玉,難以直接為決策提供清晰有力的支持。數據可視化作為一種強大的工具,能夠將海量、復雜的數據轉化為直觀、易懂的圖形、…

VoiceFixer語音修復介紹與使用

一.簡介 VoiceFixer 是一款基于深度學習的通用語音修復工具,主要用于恢復嚴重退化的語音信號,支持降噪、消除回聲、提升音質等功能。 二.核心功能 1.語音修復與增強 VoiceFixer 采用端到端的神經網絡模型,能夠處理多種語音退化問題&#x…

Vue百日學習計劃Day19-20天詳細計劃-Gemini版

重要提示: 番茄時鐘: 每個番茄鐘為25分鐘學習,之后休息5分鐘。每完成4個番茄鐘,進行一次15-30分鐘的長休息。動手實踐: DevTools 的使用和 Git 命令的掌握都需要大量的實際操作。請務必邊學邊練。環境準備&#xff1a…

Qt初識.

認識 QLabel 類,能夠在界面上顯示字符串. 通過 setText 來設置的。參數 QString (Qt 中把 C 里的很多容器類,進行了重新封裝。歷史原因) 內存泄露 / 文件資源泄露對象樹. Qt 中通過對象樹,來統一的釋放界面的控件對象. Qt 還是推薦使用 new 的…

WebGPU 圖形計算

以下是關于 WebGPU 圖形計算的基本知識點總結: 一、WebGPU 核心定位與優勢 1. 與傳統技術對比 維度WebGLWebGPU架構設計OpenGL ES 封裝現代圖形API抽象(Vulkan/Metal/D3D12)多線程支持單線程渲染多線程并行計算計算能力有限通用計算完整計算管線支持資源控制隱式狀態管理顯…

視覺基礎模型

2.1 視覺的“大模型”時代:ViT的誕生與革新 在計算機視覺領域,卷積神經網絡(CNN)曾是當之無愧的霸主。從LeNet到ResNet,CNN在圖像分類、目標檢測等任務上取得了巨大成功。然而,隨著Transformer模型在自然語…

【React Native】快速入門

對于移動端應用來說,開發 Android 應用使用的語言有 java 和 kotlin,開發 ios 應用使用的語言有 obj-c 和 Swift 。因此,我們使用 react-native 編寫一套代碼進行跨端開發。 構建項目: npx create-expo-applatest安裝 nativewin…

AR 開啟昆蟲學習新視界,解鎖奇妙微觀宇宙

在傳統昆蟲學習中,課堂教學是主要方式,老師通過板書、PPT 傳授知識,但學生被動接受,書本靜態圖片無法展現昆蟲真實比例、立體形態,學生難以直觀感受復雜身體結構。博物館的昆蟲標本也是學習途徑,不過標本放…

BI 大屏是什么意思?具體應用在哪些方面?

目錄 一、BI 大屏的定義與內涵 1. 基本概念 2. 核心要素 3. 特點優勢 二、如何搭建高效的 BI 大屏 1. 明確需求與目標 2. 選擇合適的 BI大屏工具 3. 數據整合與清洗 4. 設計可視化界面 5. 持續優化與更新 三、BI 大屏在企業運營管理中的應用 1. 銷售與營銷領域 2.…

Kafka Go客戶端--Sarama

Kafka Go客戶端 在Go中里面有三個比較有名氣的Go客戶端。 Sarama:用戶數量最多,早期這個項目是在Shopify下面,現在挪到了IBM下。segmentio/kafka-go:沒啥大的缺點。confluent-kafka-go:需要啟用cgo,跨平臺問題比較多,交叉編譯也…

Axure全鏈路交互設計:快速提升實現能力(基礎交互+高級交互)

想讓你的設計稿像真實App一樣絲滑?本專欄帶你玩轉Axure交互,從選中高亮到動態面板騷操作,再到中繼器表單花式交互,全程動圖教學,一看就會! 本專欄系統講解多個核心交互效果,是你的Axure交互急救…

自動化測試腳本點擊運行后,打開Chrome很久??

親愛的小伙伴們大家好。 小編最近剛換了電腦,這幾天做自動化測試發現打開Chrome瀏覽器需要等待好長時間,起初還以為代碼有問題,或者Chromedriver與Chrome不匹配造成的,但排查后發現并不是!! 在driver.py中…

現代人工智能系統的實用設計模式

關鍵要點 AI設計模式是為現代AI驅動的軟件中常見問題提供的可復用解決方案,幫助團隊避免重復造輪子。我們將其分為五類:提示與上下文(Prompting & Context)、負責任的AI(Responsible AI)、用戶體驗&…