[劍指Offer] 25.復雜鏈表的復制

 1 /*
 2 struct RandomListNode {
 3     int label;
 4     struct RandomListNode *next, *random;
 5     RandomListNode(int x) :
 6             label(x), next(NULL), random(NULL) {
 7     }
 8 };
 9 */
10 class Solution
11 {
12 public:
13     //在舊鏈表中創建新鏈表,此時不處理新鏈表的兄弟結點
14     void CloneNode(RandomListNode* pHead)
15     {
16         RandomListNode* pNode = pHead;
17         while(pNode != NULL)
18         {
19             RandomListNode* newNode = new RandomListNode(pNode->label);
20             newNode->next = pNode->next;
21 
22             pNode->next = newNode;
23             pNode = newNode->next;
24         }
25     }
26     //根據舊鏈表的random結點,初始化新鏈表的random結點
27     void CloneRandomNode(RandomListNode* pHead)
28     {
29         RandomListNode* pNode = pHead;
30         while(pNode != NULL)
31         {
32             RandomListNode* pNewNode = pNode->next;
33             if(pNode->random != NULL)
34                 pNewNode->random = pNode->random->next;
35             pNode = pNewNode->next;
36         }
37     }
38     //從舊鏈表中拆分得到新鏈表
39     RandomListNode* getNewList(RandomListNode* pHead)
40     {
41         RandomListNode* pNode = pHead;
42         RandomListNode* pClonedHead = pHead->next;
43         RandomListNode* pClonedNode = pHead->next;
44         
45         pNode->next = pClonedNode->next;
46         pNode = pNode->next;
47 
48         //循環
49         while(pNode!=NULL)
50         {
51             pClonedNode->next = pNode->next;
52             pClonedNode = pClonedNode->next; 
53             pNode->next = pClonedNode->next; 
54             pNode = pNode->next;
55         }
56         return pClonedHead;
57     }
58     RandomListNode* Clone(RandomListNode* pHead)
59     {
60         if(pHead==NULL) return NULL;
61         CloneNode(pHead);
62         CloneRandomNode(pHead);
63         return getNewList(pHead);
64     }
65 };

?

轉載于:https://www.cnblogs.com/lca1826/p/6496690.html

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

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

相關文章

Flask項目中應用七牛云存儲

七牛云存儲: https://developer.qiniu.com/kodo/sdk/1242/python 點擊注冊開通七牛開發者帳號 如果已有賬號,直接登錄七牛開發者后臺,點擊這里查看 Access Key 和 Secret Key pip install qiniu q Auth(Access Key,Secret Key) b…

異常檢測算法之IForest

前言 IForest即孤立森林,可以用于做異常檢測。一句話總結IForest做異常檢測的原理:異常點密度小,基于樹模型容易被一下切割出來,正常值密度大,需要切割多次才能得到目標值。 原理 iForest算法得益于隨機森林的思想&…

JavaScript - 動態數據

1、使用ajax進行數據的請求 function getData(params){$.ajax({type: "POST", //提交方式data: "{params}", //請求參數url:, //請求接口contentType: "application/text;charsetutf-8",async: false, //是否同步dataType: &quo…

用c#編寫爬蟲在marinetraffic下載船僅僅圖片

近期在做船僅僅識別方面的事情,須要大量的正樣本來訓練adaboost分類器。于是到marinetraffic這個站點上下載船僅僅圖片。寫個爬蟲來自己主動下載顯然非常方便。 站點特點 在介紹爬蟲之前首先了解一下marinetraffic這個站點的一些特點: 1. 會定期檢測爬蟲…

發送手機驗證碼通過調用第三方網易云信API(flask項目)

一、 獲取驗證碼: 1. 輸入手機號碼 2. 通過ajax發送請求 3. 后端: 獲取手機號碼 使用requests向第三方的服務端(網易云信)發送請求 官方文檔 https://dev.yunxin.163.com/docs/product/%E7%9F%AD%E4%BF%A1/%E7%9F…

異常檢測算法之LOF

前言: LOF:Local outlier factor,即局部異常因子。LOF主要是通過比較每個點p和其鄰域點的密度來判斷該點是否為異常點,如果點p的密度越低,越可能被認定是異常點。至于密度,是通過點之間的距離來計算的&…

Android屬性動畫進階用法

2019獨角獸企業重金招聘Python工程師標準>>> 在上周二文章中介紹補間動畫缺點的時候有提到過,補間動畫是只能對View對象進行動畫操作的。而屬性動畫就不再受這個限制,它可以對任意對象進行動畫操作。那么大家應該還記得之前我舉的一個例子&am…

5.3linux下C語言socket網絡編程簡例

原創文章,轉載請注明轉載字樣和出處,謝謝! 這里給出在Linux下的簡單socket網絡編程的實例,使用tcp協議進行通信,服務端進行監聽,在收到客戶端的連接后,發送數據給客戶端;客戶端在接受…

parser.add_argument驗證格式

article_bp Blueprint(article, __name__, url_prefix/api) api Api(article_bp) parser reqparse.RequestParser() parser.add_argument(name, typestr, help必須填寫名稱, requiredTrue) channel_fields { id: fields.Integer, cname: fields.String } clas…

異常檢測算法之HBOS

前言 HBOS(Histogram-based Outlier Score)核心思想:將樣本按照特征分成多個區間,樣本數少的區間是異常值的概率大。 原理 該方法為每一個樣本進行異常評分,評分越高越可能是異常點。評分模型為: 假設樣…

字典和json 的區別 和轉換

前言:字典和json非常像。接下來比較一下兩者的異同 先看一下字典的寫法: a {a:1,b:2,c:3} 再看一下json的寫法: {"studentInfo":{"id":123456,"stu_name":"Dorra"} } 從形式上看,都是…

Struts2的工作原理及工作流程

眾所周知,Struts2是個非常優秀的開源框架,我們能用Struts2框架進行開發,同時能 快速搭建好一個Struts2框架,但我們是否能把Struts2框架的工作原理用語言表達清楚,你表達的原理不需要說出底層是怎么實現的,我…

正則表達式采坑

[a-zA-Z]匹配大小寫字符 \w 匹配字母、數字、下劃線 {5,7} 表示前面的字符(即:\w)必須至少出現 5 次最多出現 7 次. 合起來就是 >6 少于8個的字符 [a-zA-Z]\w{6,12} --------------》》 就是要輸入七位數到十三位&#x…

easyui動態顯示和隱藏表頭

為什么80%的碼農都做不了架構師?>>> var _bt{date:日期,subtime:填寫時間,xz:小組,uname:操作人,qdbh:渠道編號,mt:媒體,zh:賬戶,sjd:時間段,tfwz:投放位置,tfh:投放號,td:團隊,sjje:實際金額,jxs:進線數,cb:成本,yxzyjx:有效資源進線,yxzyl:有效資源率…

物聯網

如果要說未來什么技術正在或將徹底改變人類生活、工作和娛樂的方式,那必須是物聯網。小到各種可穿戴產品,大到汽車、工廠和樓宇,物聯網能使一切設備互聯并具備智慧。物聯網也正改變著產業的格局,索尼、夏普、東芝等日本傳統電子設…

理解:復雜度是O(log^n) 就是二分法

冒昧問一下,為什么二分法查找的復雜度是O(log^n)?這是怎么計算的? 你要從1,2,3,4,5,6,7,8里面找到3,分成幾步? 第一步,…

淺談管理數據平臺的一些想法

前言: 對于任何使用大數據技術的公司來說,大數據平臺特別是Hive來說,維護其高效快速的運行,對整個公司的運作來說至關重要。比如說:某個調度任務失敗了造成業務部門的某些報表無法正常產出;hive平臺最近速…

MongoDB誤刪表恢復

一、場景描述公司某工程師執行db.giveget_card.drop(),誤將線上表刪除。幸好每天都有做備份,這個時候就體現了備份的重要性了,哈哈哈。。。二、模擬故障過程備份數據大小:rs_test01:PRIMARY> use ycsb switched to db ycsb rs_…

linux下kill某個應用

linux命令行與桌面切換快捷鍵CtrAltF1,CtrAltF7 ps -e | grep abc sudo kill xyz 轉載于:https://www.cnblogs.com/cj2014/p/6512354.html

flask中數據庫的基本操作-增刪改查【備忘】

1.增加數據(就相當于增加一個實例對象) user1 User(namelong,email1006550026qq.com,password123456,role_id1) db.session.add(user1) db.session.commit() 2.修改數據 修改用戶表里面的name為long的姓名為:fang 首先查詢到名為…