日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深拷贝一个对象会了,怎么深拷贝一个图?

發布時間:2025/3/20 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深拷贝一个对象会了,怎么深拷贝一个图? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原創公眾號:bigsai 如有幫助歡迎一鍵三聯
文章已收錄在 全網都在關注的數據結構與算法學習倉庫 歡迎star

前言

在前面,我寫過一篇Java的深淺拷貝,那是基于對象的拷貝,但放眼數據結構與算法中,你有考慮過怎么拷貝一個圖嗎?(無向圖)

在此之前,你需要對一些概念搞清楚:什么是深拷貝、淺拷貝?

淺拷貝:如果拷貝的是引用類型(非基本類型),就只會拷貝一層(嵌套的對象不會被拷貝),如果原對象發生改變,那么拷貝對象也會發生改變。

深拷貝:深拷貝的話會拷貝多層,嵌套的對象也會被拷貝出來,相當于開辟一個新的內存地址用于存放拷貝的對象。

用通俗一點(可能不完全確切)的話解釋,淺拷貝就像你的雙胞胎兄弟一樣,你們父母親人都是一樣的;而深拷貝就像另一個平行的時空,那里有另一個你的一切。

既然搞懂了深淺拷貝以及其區別,我們再看看圖,圖一般用來表示節點和節點之間的關系,常分為有向圖和無向圖,在這里我們以無向圖(一旦連接即雙向)為主題。

我們對圖的表示一般有鄰接矩陣和鄰接表,鄰接矩陣的話比較直觀的表示一個圖的連通性,操作維護更簡單,在Java中一般使用二維數組表示鄰接矩陣,數組中的值可以表示兩個節點的權值。


使用鄰接矩陣雖然簡單但是有個比較差的就是浪費較多內存空間,所以很多情況還是使用鄰接表來表示一個圖,鄰接表一般是數組+鏈表的這么一個組合。但是也有一些特殊情況各個節點比較獨立的不用數組聯立。

問題分析

如果這個圖使用鄰接表表示,給你無向 連通 圖中一個節點的引用,請你返回該圖的 深拷貝(克隆),這個問題是力扣131克隆圖原題。

圖中的每個節點都包含它的值 val(int) 和其鄰居的列表(list[Node])。

class Node {public int val;public List<Node> neighbors; }

給一個節點的引用,怎么克隆這個圖呢?

如果只有這一個節點,那么克隆這個節點就好。如果這個節點只有一層鄰居,那克隆這個鄰居的列表(克隆List集合)即可。

但事實是這個節點可能有多層鄰居,并且鄰居之間可能存在著復雜聯系。

克隆整個圖,所以圖的每一個節點都要被克隆的,我們需要使用圖論的搜索算法來枚舉所有節點,并且在遍歷的過程中我們需要想辦法將節點之間的關系也克隆下來。遍歷的方法可以使用dfs或者bfs,這里使用bfs來實現。

凡是遇到苦難的時候我們模擬一下這個克隆的過程即可,通過下面這張圖可以大概了解克隆圖的過程中,最大的問題是要避免創建重復節點。即有的節點一旦被創建它的引用可能在后面會被用到的。

那我們該如何解決這個問題呢?怎么樣能夠快速找到對應節點的引用?

這里最好的方法是使用HashMap<Node,Node>,其中key保存的是被克隆圖中的節點,而value是在克隆圖中所對應的節點,這樣在克隆新圖的過程中,我們遍歷被克隆圖中節點鄰居的時候,就可以用哈希判斷這個節點對應的value是否存在(即這個節點在克隆圖中是否存在)。

  • 如果存在那么直接使用HashMap找到對應節點放入克隆圖中新創建的List中。
  • 不過不存在說明這個節點第一次遇到,克隆這個節點,先放到hashMap中與被克隆節點對應,然后放入克隆圖中新創建的List中。

這個流程其中大概是這樣的:

有了上面的分析,想必你對這個問題的解決已經有了思路和想法,下面就提供一下代碼實現。

/* // Definition for a Node. class Node {public int val;public List<Node> neighbors;public Node() {val = 0;neighbors = new ArrayList<Node>();}public Node(int _val) {val = _val;neighbors = new ArrayList<Node>();}public Node(int _val, ArrayList<Node> _neighbors) {val = _val;neighbors = _neighbors;} } */class Solution {public Node cloneGraph(Node node) {if(node==null)return null;Map<Node, Node>map=new HashMap<Node, Node>();//節點映射克隆的節點Queue<Node>oldqueue=new ArrayDeque<Node>();//bfs隊列oldqueue.add(node);Node value=new Node(node.val);//先將返回的節點 創建、映射map.put(node, value);while (!oldqueue.isEmpty()) {Node oldnode=oldqueue.poll();Node newnode=map.get(oldnode);//找到這個節點對應克隆的映射(一定存在)List<Node>list=oldnode.neighbors;//鄰居List<Node>listnew=new ArrayList<Node>();//克隆鄰居for(Node team:list){if(map.containsKey(team)){listnew.add(map.get(team));//點以前已經遇到,直接添加到鄰居列表}else {//這個鄰居第一次碰到,需要創建新節點賦予值Node no=new Node(team.val);map.put(team, no);//映射listnew.add(no);oldqueue.add(team);//這個點第一次遇到,要將它放到隊列中進行bfs搜索}}newnode.neighbors=listnew;//將節點的鄰居指向list}return value;} }

本篇內容到這里就結束啦,還希望你能一鍵三聯支持一下!
新人求關注!關注后歡迎加入力扣打卡群(備注力扣 csdn即可),持續產出肝貨!

總結

以上是生活随笔為你收集整理的深拷贝一个对象会了,怎么深拷贝一个图?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 超碰2023 | 午夜毛片在线观看 | 久久国产网站 | 精品视频免费 | 日韩国产精品一区 | 久久h视频 | av中文字幕免费在线观看 | 国产亚洲色婷婷久久 | 中文字幕一区二区三区四区欧美 | 本道久久| 美女隐私免费 | 一本一道人人妻人人妻αv 九一在线视频 | 亚洲欧美另类日韩 | 国产三级精品视频 | 91免费视频入口 | 最新视频 - 88av | 日本在线播放一区 | 最新中文字幕av专区 | 麻豆传谋在线观看免费mv | 日本精品视频在线 | 中文字幕在线免费观看 | 91网页版 | 人人澡人人爱 | 亚洲av无码成人精品区 | jjzz国产| 亚洲成人免费视频 | 密臀久久| 懂色tv | 免费欧美在线 | 久久久久久久久久91 | 精品国产乱码久久久久久1区二区 | 日日噜噜噜夜夜爽爽狠狠视频97 | 免费看毛片网站 | 欧美一区二区三区四区五区 | 日本一本久久 | 丝袜一区二区三区四区 | 美女一区二区三区四区 | 日本在线一本 | 美女扒开屁股让男人桶 | 污污内射在线观看一区二区少妇 | 亚洲黄色影视 | 色七七视频 | 亚洲第1页 | 中文字幕乱码一区二区三区 | 99r热| 天天干天天爽天天射 | 高潮一区 | 日韩欧美一区二区在线观看 | 欧美精品黄色片 | 国产视频欧美 | 高清欧美精品xxxxx在线看 | 国产欧美一区二区三区精品酒店 | 久久亚洲免费 | 亚洲成人1区 | 黄色综合| 黄色国产毛片 | 久久99精品国产麻豆91樱花 | 一级黄色影院 | 秋霞精品| av大帝在线 | 香蕉视频二区 | 天天弄天天操 | 成人黄色在线播放 | 欧美黑人疯狂性受xxxxx野外 | 38在线视频| 国产suv精品一区二区68 | 亚洲毛茸茸 | 国产成人精品999在线观看 | 麻豆av免费观看 | 欧美少妇一区二区 | 欧美第一精品 | 制服丝袜国产精品 | 超碰人操 | 精品福利视频一区二区 | 欧美高清一区 | 动漫精品一区一码二码三码四码 | 亚洲精品美女在线观看 | 茄子视频A | 性色在线 | 性欧美精品中出 | 精品久久电影 | 欧美成人精品欧美一级私黄 | 教练含着她的乳奶揉搓揉捏动态图 | 女儿的朋友4在线观看 | 色男人天堂av | 香蕉av一区二区 | 永久av在线| 美女被日网站 | 在线视频观看国产 | 狠狠躁夜夜躁人人爽天天高潮 | 色偷偷亚洲 | 日本一区二区三区精品视频 | 色94色欧美sute亚洲线路二 | 日本啪啪啪一区二区 | 日本久久片 | 波多野结衣乳巨码无在线观看 | 999一区二区三区 | 一乃葵在线| 7x7x7x人成影视 |