OJ練習第151題——克隆圖

克隆圖

力扣鏈接:133. 克隆圖

題目描述

給你無向 連通 圖中一個節點的引用,請你返回該圖的 深拷貝(克隆)。

示例

在這里插入圖片描述

分析

對于一張圖而言,它的深拷貝即構建一張與原圖結構,值均一樣的圖,但是其中的節點不再是原來圖節點的引用。因此,為了深拷貝出整張圖,我們需要知道整張圖的結構以及對應節點的值。

由于題目只給了我們一個節點的引用,因此為了知道整張圖的結構以及對應節點的值,我們需要從給定的節點出發,進行「圖的遍歷」,并在遍歷的過程中完成圖的深拷貝。

為了防止多次遍歷同一個節點,陷入死循環,我們需要用一種數據結構記錄已經被克隆過的節點。

深度優先搜索


class Solution {private HashMap<Node, Node> visited = new HashMap<>();public Node cloneGraph(Node node) {if(node == null) return node;if(visited.containsKey(node)) return visited.get(node);Node cloneNode = new Node(node.val, new ArrayList());visited.put(node, cloneNode);for(Node neighbor : node.neighbors) {cloneNode.neighbors.add(cloneGraph(neighbor));}return cloneNode;}
}

廣度優先搜索

class Solution {public Node cloneGraph(Node node) {if(node == null) return node;HashMap<Node, Node> visited = new HashMap<>();LinkedList<Node> queue = new LinkedList<Node>();queue.add(node);visited.put(node, new Node(node.val, new ArrayList()));while(!queue.isEmpty()) {Node n = queue.remove();for(Node neighbor : n.neighbors) {if(!visited.containsKey(neighbor)) {visited.put(neighbor, new Node(neighbor.val, new ArrayList()));queue.add(neighbor);}visited.get(n).neighbors.add(visited.get(neighbor));}}return visited.get(node);}
}

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

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

相關文章

C++中的類型擦除技術

文章目錄 一、C類型擦除Type Erasure技術1.虛函數2.模板和函數對象 二、任務隊列1.基于特定類型的方式實現2.基于任意類型的方式實現 參考&#xff1a; 一、C類型擦除Type Erasure技術 C中的類型擦除&#xff08;Type Erasure&#xff09;是一種技術&#xff0c;用于隱藏具體類…

Electron基礎篇

人生有些事,錯過一時,就錯過一世。 官網&#xff1a;簡介 | Electron Electron-大多用來寫桌面端軟件 Electron介紹 Electront的核心組成是Chromium、Node.js以及內置的Native API&#xff0c;其中Chromium為Electron提供強大的UI能力&#xff0c;可以在不考慮兼容的情況下利…

使用神卓互聯內網穿透搭建遠程訪問公司ERP系統

神卓互聯是一款企業級內網穿透軟件&#xff0c;可以將內網中的服務映射到公網上&#xff0c;實現內網服務的訪問。通過神卓互聯&#xff0c;您可以遠程訪問ERP系統。在使用神卓互聯進行內網穿透時&#xff0c;您只需要在生成的公網地址后面加上ERP系統的端口號&#xff0c;即可…

NVIDIA vGPU License許可服務器高可用全套部署秘籍

第1章 前言 近期遇到比較多的場景使用vGPU&#xff0c;比如Citrix 3D場景、Horizon 3D場景&#xff0c;還有AI等&#xff0c;都需要使用顯卡設計研發等&#xff0c;此時許可服務器尤為重要&#xff0c;許可斷掉會出現掉幀等情況&#xff0c;我們此次教大家部署HA許可服務器。 …

【.net】本地調試運行只能用localhost的問題

【.net】本地調試運行只能用localhost的問題 解決方案 找到到項目目錄下 隱藏文件夾 .vs /項目名稱/config/applicationhost.config <bindings><binding protocol"http" bindingInformation"*:1738:localhost" /></bindings> 再加一條你…

職業學院物聯網實訓室建設方案

一、概述 1.1專業背景 物聯網&#xff08;Internet of Things&#xff09;被稱為繼計算機、互聯網之后世界信息產業第三次浪潮&#xff0c;它并非一個全新的技術領域&#xff0c;而是現代信息技術發展到一定階段后出現的一種聚合性應用與技術提升&#xff0c;是隨著傳感網、通…

如何判斷自己是否適合游戲開發?

引言 游戲開發是一個充滿創意和技術挑戰的領域&#xff0c;吸引著越來越多的年輕人投身其中。然而&#xff0c;要想在游戲開發領域獲得成功&#xff0c;首先需要明確自己是否適合這個領域。本文將為你介紹一些判斷自己是否適合游戲開發的關鍵因素。 1. 技術興趣和編程能力 游…

Python 程序設計入門(024)—— Python 的文件操作

Python 程序設計入門&#xff08;024&#xff09;—— Python 的文件操作 目錄 Python 程序設計入門&#xff08;024&#xff09;—— Python 的文件操作一、文件對象二、讀取文件內容的方法1、read() 方法2、readline() 方法3、readlines() 方法4、使用 for 循環讀取文件內容 …

麥肯錫發布《2023科技趨勢展望報告》,生成式AI、下一代軟件開發成為趨勢,軟件測試如何貼合趨勢?

近日&#xff0c;麥肯錫公司發布了《2023科技趨勢展望報告》。報告列出了15個趨勢&#xff0c;并把他們分為5大類&#xff0c;人工智能革命、構建數字未來、計算和連接的前沿、尖端工程技術和可持續發展。 類別一&#xff1a;人工智能革命 生成式AI 生成型人工智能標志著人工智…

CSRF

文章目錄 CSRF(get)CSRF(post)CSRF Token CSRF(get) 根據提示的用戶信息登錄 點擊修改個人信息 開啟bp代理&#xff0c;點擊submit 攔截到請求數據包 瀏覽器關閉代理 刷新頁面 CSRF(post) 使用BP生成CSRF POC post請求偽造&#xff0c;可以通過釣魚網站&#xff0c;誘導用戶去…

docker 常用命令大全

1.查看docker版本&#xff1a; docker -v2.檢查 Docker 是否正在運行: systemctl status docker3.重啟docker服務: systemctl restart docker4.列出本地鏡像: docker images5.列出正在運行的容器&#xff1a; docker ps6.列出所有容器&#xff08;包括停止的&#xff09;&…

css 實現文字橫向循環滾動

實現效果 思路 ## 直接上代碼,html部分 //我這里是用的uniapp <view class"weather_info_wrap"><view class"weather_info">當前多云&#xff0c;今晚8點轉晴&#xff0c;明天有雨&#xff0c;溫度32攝氏度。</view><view class&qu…

CF1005A Tanya and Stairways 題解

題目傳送門 題目意思&#xff1a; 給你 n n n 個數&#xff0c;如果第 i i i 個數小于或等于第 i ? 1 i-1 i?1 個數&#xff0c;就輸出這個數。 思路&#xff1a; 輸入后直接遍歷判斷即可。 代碼&#xff1a; #include<bits/stdc.h> using namespace std; int …

解決IDEA tomcat控制臺只有server日志

解決IDEA tomcat控制臺只有server日志 確認tomcatxxx/conf/logging.properties文件是否存在&#xff0c;存在就會有。前提是在run configuration配置了打印多個日志

uniapp封裝組件,選中后右上角顯示對號√樣式(通過css實現)

效果&#xff1a; 一、組件封裝 1、在項目根目錄下創建components文件夾&#xff0c;自定義組件名稱&#xff0c;我定義的是xc-button 2、封裝組件代碼 <template><view class"handle-btn"><view :class"handleIdCode 1 ? select : unSelec…

螞蟻數科持續發力PaaS領域,SOFAStack布局全棧軟件供應鏈安全產品

8月18日&#xff0c;記者了解到&#xff0c;螞蟻數科再度加碼云原生PaaS領域&#xff0c;SOFAStack率先完成全棧軟件供應鏈安全產品及解決方案的布局&#xff0c;包括靜態代碼掃描Pinpoint、軟件成分分析SCA、交互式安全測試IAST、運行時防護RASP、安全洞察Appinsight等&#x…

【電商領域】Axure在線購物商城小程序原型圖,品牌自營垂直電商APP原型

作品概況 頁面數量&#xff1a;共 60 頁 兼容軟件&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 應用領域&#xff1a;網上商城、品牌自營商城、商城模塊插件 作品申明&#xff1a;頁面內容僅用于功能演示&#xff0c;無實際功能 作品特色 本作品為品牌自營網上商城…

無涯教程-Perl - warn函數

描述 此函數將LIST的值打印到STDERR。基本上與die函數相同,除了不對出口進行任何調用并且在eval語句內不引發異常。這對于引發錯誤而不導致腳本過早終止很有用。 如果變量$包含一個值(來自先前的eval調用),并且LIST為空,則$的值將以。\t.caught打印。附加到末尾。如果$和LIST…

MySQL數據庫概述

MySQL數據庫概述 1 SQL SQL語句大小寫不敏感。 SQL語句末尾應該使用分號結束。 1.1 SQL語句及相關操作示例 DDL&#xff1a;數據定義語言&#xff0c;負責數據庫定義、數據庫對象定義&#xff0c;由CREATE、ALTER與DROP三個語法所組成DML&#xff1a;數據操作語言&#xff…

關于小程序收集用戶手機號行為的規范

手機號在日常生活中被廣泛使用&#xff0c;是重要的用戶個人信息&#xff0c;小程序開發者應在用戶明確同意的前提下&#xff0c;依法合規地處理用戶的手機號信息。 而部分開發者在處理用戶手機號過程中&#xff0c;存在不規范收集行為&#xff0c;影響了用戶的正常使用體驗&a…