圖論第8天

685.冗余連接II

這題需要考慮兩種情況:

1.兩個輸入

2.沒有兩個輸入就是有成環

class Solution
{
public:static const int N = 1005;int father[N];int n;void init(){for (int i = 0; i <= n; i++){father[i] = i;}}int find(int x){return x == father[x] ? x : father[x] = find(father[x]);}int isSame(int a, int b){a = find(a);b = find(b);return (a == b);}void join(int a, int b){a = find(a);b = find(b);if (a == b)return;father[b] = a;}bool lianggeshuru(vector<vector<int>> &edges, int deleteNode){init();for (int i = 0; i < edges.size(); i++){if (i == deleteNode)continue;if (isSame(edges[i][0], edges[i][1])){return false;}join(edges[i][0], edges[i][1]);}return true;}vector<int> huan(vector<vector<int>> &edges){init();for (int i = 0; i < n; i++){if (isSame(edges[i][0], edges[i][1]))return edges[i];join(edges[i][0], edges[i][1]);}return {};}vector<int> findRedundantDirectedConnection(vector<vector<int>> &edges){n = edges.size();int count[N] = {0};// 有兩個輸入for (int i = 0; i < n; i++){count[edges[i][1]]++;}vector<int> vec;for (int i = n - 1; i >= 0; i--){if (count[edges[i][1]] == 2){vec.push_back(i);cout << i << endl;}}if (vec.size() > 0){if (lianggeshuru(edges, vec[0])){return edges[vec[0]];}else{return edges[vec[1]];}}// 有環return huan(edges);}
};

默寫一遍再。其實突然就對這行代碼不理解了,需要做個小實驗。其實就是后面可以跟一個等式。

    int find(int x){return x == father[x] ? x : father[x] = find(father[x]);}

挺好挺好,默寫出來啦!!!思路很重要!!!

class Solution {
public:static const int N = 1005;int father[N] = {0};void init(int num){for(int i = 0;i < num;i++){father[i] = i;}}int find(int x){return x == father[x] ? x : father[x] = find(father[x]);}bool isSame(int a,int b){a = find(a);b = find(b);return (a == b);}void join(int a ,int b){a = find(a);b = find(b);if(a == b)return;father[b] = a;}bool liashuru(vector<vector<int>>& edges,int deleteNode){init(edges.size());// because 1 <= ui, vi <= nfor(int i = 0;i< edges.size();i++){if(i == deleteNode)continue;if(isSame(edges[i][0],edges[i][1])){return false;}join(edges[i][0],edges[i][1]);}return true;}vector<int> huan(vector<vector<int>>& edges){init(edges.size());// because 1 <= ui, vi <= nfor(int i = 0;i < edges.size();i++){if(isSame(edges[i][0],edges[i][1])){return edges[i];}join(edges[i][0],edges[i][1]);}return {};}vector<int> findRedundantDirectedConnection(vector<vector<int>>& edges) {int n = edges.size();int count[N] = {0};for(int i = 0;i < n;i++){count[edges[i][1]]++;}vector<int>vec;for(int i = n-1;i>=0;i--){if(count[edges[i][1]] == 2){vec.push_back(i);}}//倆輸入if(vec.size() > 0){if(liashuru(edges,vec[0])){return edges[vec[0]];}else{return edges[vec[1]];}}//有環return huan(edges);}
};

那明天開始做面試題。

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

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

相關文章

Python——用新字符替換字符串中的舊字符

替換方法&#xff1a; string.replace&#xff08;old&#xff0c;new [&#xff0c;count]&#xff09;參考文章&#xff1a; Python程序用特定字符替換字符串中的空格

變聲器軟件免費版有哪些?國內外12大熱門變聲器大盤點!(新)

變聲軟件是一種人工智能AI音頻處理工具&#xff0c;允許用戶實時修改自己的聲音或改變預先錄制的音頻。這些軟件解決方案可提供不同的效果&#xff0c;如改變聲音的音調或速度&#xff0c;或將我們的聲音轉換成其他人或其他東西的聲音&#xff0c;如名人、卡通人物、機器人或不…

【C/C++】相機標定

參考文章 相機標定&#xff08;Camera calibration&#xff09;原理、步

WinForms 應用(.NET 8.0)使用ReportViewerCore.WinForms顯示打印RDLC報表

在要WinForms 應用&#xff08;.NET 8.0&#xff09;中&#xff0c;顯示RDLC報表&#xff0c;就要使用ReportViewerCore.WinForms。原來的ReportViewer只能在.NET Framework框架下運行。 1.ReportViewerCore.WinForms 程序包說明 SQL Server Reporting Services ReportViewer…

Windows下使用netty的SelfSignedCertificate進行SSL加密通信

在使用netty的時候&#xff0c;經常需要對通信進行SSL加密&#xff0c;這就需要相關的證書和秘鑰&#xff1b; 當我們在自己的開發環境中進行測試的時候&#xff0c;有一個非常簡單的方法來創建證書和私鑰文件&#xff0c;netty提供了SelfSignedCertificate類。 SelfSignedCer…

UG12編程怎么沒有:深度解析與困惑探尋

UG12編程怎么沒有&#xff1a;深度解析與困惑探尋 UG12編程作為現代制造業的重要工具&#xff0c;其應用廣泛且功能強大。然而&#xff0c;對于初學者或某些特定需求的用戶來說&#xff0c;有時可能會遇到“UG12編程怎么沒有”的困惑。這種困惑可能源于軟件功能的不熟悉、操作…

[stm32]——uc/OS-III多任務程序

目錄 一、獲取uC/OS-III源碼 二、移植源代碼 &#xff08;1&#xff09;建立工程文件 &#xff08;2&#xff09;移植uC/OS-III源碼 &#xff08;3&#xff09;添加工程組件和頭文件路徑 &#xff08;4&#xff09;添加頭文件路徑 三、修改代碼 總結 一、獲取uC/OS-III源碼 …

【Vue】聲明式導航-自定義類名(了解)

問題 router-link的兩個高亮類名 太長了&#xff0c;我們希望能定制怎么辦 解決方案 我們可以在創建路由對象時&#xff0c;額外配置兩個配置項即可。 linkActiveClass和linkExactActiveClass const router new VueRouter({routes: [...],linkActiveClass: "類名1&quo…

【中篇】從 YOLOv1 到 YOLOv8 的 YOLO 物體檢測模型歷史

YOLO 型號之所以聞名遐邇,主要有兩個原因:其速度和準確性令人印象深刻,而且能夠快速、可靠地檢測圖像中的物體。上回我解釋了Yolo v1, 今天從Yolov2開始。 YOLOv2:更好、更快、更強 2017 年 7 月一個悶熱的星期二下午,雷德蒙(Joseph Redmon, Yolo創始人)再次走上舞臺。 …

Android gradle kts 8.0以上版本配置簽名和修改APK輸出名字

目錄 概述修改簽名配置新建簽名文件目錄配置簽名信息使用簽名信息打包 修改APK名稱 概述 之前寫過一篇文章是通過Kotlin的Dsl結合gradle編寫的插件來管理項目依賴&#xff0c;我是從一個開源項目叫DanDanPlayAndroid項目上學到的&#xff0c;那時還沒有使用toml文件來管理項目…

【CS.SE】使用 docker pull confluentinc/cp-kafka 的全面指南

文章目錄 1 引言2 準備工作2.1 安裝 Docker2.1.1 在 Linux 上安裝 Docker2.1.2 在 macOS 上安裝 Docker2.1.3 在 Windows 上安裝 Docker 2.2 驗證 Docker 安裝 3 拉取 confluentinc/cp-kafka Docker 鏡像3.1 拉取鏡像3.2 驗證鏡像 4 運行 Kafka 容器4.1 啟動 ZooKeeper4.2 啟動…

【原創】springboot+mysql農業園區管理系統設計與實現

個人主頁&#xff1a;程序猿小小楊 個人簡介&#xff1a;從事開發多年&#xff0c;Java、Php、Python、前端開發均有涉獵 博客內容&#xff1a;Java項目實戰、項目演示、技術分享 文末有作者名片&#xff0c;希望和大家一起共同進步&#xff0c;你只管努力&#xff0c;剩下的交…

公差基礎(互換性和測量基礎)

互換性概念&#xff1a; 圖紙設計是理論的&#xff0c;理性的&#xff0c;沒有誤差的&#xff0c;但是實際上加工上市有誤差的。 所以說&#xff0c;實際加工出來的零件是否符合要求&#xff0c;我們需要對圖紙上的尺寸精度&#xff0c;幾何精度&#xff0c;表面粗糙度進行說明…

STM32關于uc/OS-III的多任務程序

目錄 一、UCOS-III源碼獲取 二、HAL庫工程的建立 1.RCC配置 2.SYS配置 3.USART1配置 4.GPIO配置 5.時鐘配置 6.項目配置 三、KEil文件添加 1.文件復制 2.KEil工程添加 3.添加文件路徑 四、代碼修改 1. 2.修改文件app_cfg.h中代碼 3.修改include.h的代碼 4.修改…

【傳知代碼】DETR[端到端目標檢測](論文復現)

前言&#xff1a;想象一下&#xff0c;當自動駕駛汽車行駛在繁忙的街道上&#xff0c;DETR能夠實時識別出道路上的行人、車輛、交通標志等目標&#xff0c;并準確預測出它們的位置和軌跡。這對于提高自動駕駛的安全性、減少交通事故具有重要意義。同樣&#xff0c;在安防監控、…

【二進制部署k8s-1.29.4】十、coredns的安裝部署

文章目錄 簡介 一.下載并修改coredns配置文件二.安裝coredns三.驗證coredns的安裝 簡介 本章節主要講解安裝coredns-v1.11.1的安裝&#xff0c;并進行驗證。 第一章.安裝前軟件準備及系統初始化階段 第二章.證書及配置文件的準備 一.下載并修改coredns配置文件 下載地址&#x…

未來已來:Angular、React、Vue.js——前端框架的三大巨頭

目錄 前言 一、Angular框架 特點和優勢 核心技術和應用場景 二、React框架 特點和優勢 核心技術和應用場景 三、Vue.js框架 特點和優勢 核心技術和應用場景 總結&#xff1a; 前言 在Web前端開發領域&#xff0c;隨著技術的不斷發展&#xff0c;出現了眾多優秀的框…

APP開發技術的變遷史

隨著移動互聯網的迅猛發展&#xff0c;APP&#xff08;應用程序&#xff09;已經成為人們日常生活中不可或缺的一部分。從最初的簡單工具到如今的智能平臺&#xff0c;APP開發技術在這十年間經歷了翻天覆地的變化。本文將從多個維度探討近十年來APP開發技術的變遷史&#xff0c…

【Python學習路線(課程大綱+Python視頻教程+下載地址)_python 教程下載。】

目前Python已經成為最受歡迎的程序設計語言之一。Python的設計哲學是“優雅”、“明確”、“簡單”。 學習Python具有多重顯著的好處。首先&#xff0c;Python的語法簡潔易讀&#xff0c;降低了編程的入門門檻&#xff0c;使初學者能夠更快地掌握編程的基本概念。其次&#xff…

OpenCV 4.10 發布

OpenCV 4.10 JPEG 解碼速度提升 77%&#xff0c;實驗性支持 Wayland、Win ARM64 根據 “OpenCV 中國團隊” 介紹&#xff0c;從 4.10 開始 OpenCV 對 JPEG 圖像的讀取和解碼有了 77% 的速度提升&#xff0c;超過了 scikit-image、imageio、pillow。 4.10 版本的一些亮點&…