成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

遞歸算法中的鏈表操作

開(kāi)發(fā) 架構(gòu) 算法
今天我們要講講如何添加自己的操作,是在遞歸調(diào)用之前,還是在遞歸調(diào)用之后。

 今天,打算將問(wèn)題深入一下,即添加相應(yīng)的操作在遞歸的過(guò)程中。

(免責(zé)聲明:下面的解法純屬娛樂(lè) ,另外,示例代碼未經(jīng)編譯和調(diào)試,許多想法未經(jīng)實(shí)踐驗(yàn)證。)

查找鏈表當(dāng)中倒數(shù)第N個(gè)節(jié)點(diǎn)。

解法一

逐層遞歸,遍歷到最后一個(gè)節(jié)點(diǎn),并從返回的節(jié)點(diǎn)一次向后遞歸,遍歷N次,找到倒數(shù)第N個(gè)節(jié)點(diǎn)。

  1. private LNode targetNode = null
  2. private LNode FindLastNthNode(LNode head, int index) 
  3.     if (head.Next == null
  4.     { 
  5.         return head; 
  6.     } 
  7.  
  8.     FindLastNthNode(head.Next, index); 
  9.  
  10.     LNode tmpNode = head; 
  11.  
  12.     while ((head.Next != null) && (index > 0)) 
  13.     { 
  14.         head = head.Next; 
  15.         index--; 
  16.     } 
  17.  
  18.     if (head.Next == null && index == 0) 
  19.     { 
  20.         targetNode = tmpNode; 
  21.         return targetNode; 
  22.     } 
  23.  
  24.     return targetNode; 
  25.  

分析

1. 額外的全局性的輔助變量。

2. 時(shí)間復(fù)雜度為O(index * n),n為鏈表的長(zhǎng)度。

3. 性能開(kāi)銷(xiāo)較大。

解法二(解法一的變形)

每當(dāng)遍歷到當(dāng)前節(jié)點(diǎn),即再循環(huán)向后遍歷n個(gè),如果節(jié)點(diǎn)遍歷到最后,并且index自減等于0,說(shuō)明當(dāng)前節(jié)點(diǎn)即為要找的倒數(shù)第n個(gè)。也就是說(shuō)解法一是從后向前找,而解法二是從前向后找。

  1. private LNode targetNode2 = null
  2.  
  3. private LNode FindLastNthNode2(LNode head, int index) 
  4.     if (head.Next == null
  5.         return head; 
  6.  
  7.     LNode tmpNode = head; 
  8.  
  9.     while (head != null && index >= 0) 
  10.     { 
  11.         head = head.Next; 
  12.         index--; 
  13.     } 
  14.  
  15.     if (head == null && index == 0) 
  16.     { 
  17.         targetNode2 = tmpNode; 
  18.         return targetNode2; 
  19.     } 
  20.  
  21.     return targetNode2; 

分析:與解法一一樣。

解法三

  1. private int counter = 0; 
  2. private LNode targetNode2; 
  3.  
  4. private LNode FindLastNthNode2(LNode head, int index) 
  5.     if (head.Next == null
  6.     { 
  7.         counter = index; 
  8.         return head; 
  9.     } 
  10.  
  11.     FindLastNthNode2(head.Next, index); 
  12.  
  13.     counter--; 
  14.  
  15.     if (counter == 0) 
  16.     { 
  17.         targetNode2 = head; 
  18.         return targetNode2; 
  19.     } 
  20.  
  21.     return targetNode2; 
定義一個(gè)全局變量,用來(lái)計(jì)數(shù),當(dāng)遞歸從最后一個(gè)節(jié)點(diǎn)返回時(shí),計(jì)數(shù)器減減,當(dāng)?shù)扔?時(shí),這個(gè)節(jié)點(diǎn)即是要找的倒數(shù)第N個(gè)節(jié)點(diǎn)分析
1. 兩個(gè)輔助變量。
2. 時(shí)間復(fù)雜度為O(n)。
3. 多余的index,累贅的counter。
責(zé)任編輯:彭凡 來(lái)源: 博客園
相關(guān)推薦

2021-01-28 07:33:34

JavaScript鏈表數(shù)據(jù)

2020-07-10 08:15:19

遞歸算法函數(shù)

2012-02-22 14:12:08

算法

2009-11-17 16:53:24

PHP遞歸算法

2009-11-30 09:35:15

PHP遞歸算法

2010-04-26 14:43:17

Oracle遞歸條件查

2021-09-15 07:40:50

二叉樹(shù)數(shù)據(jù)結(jié)構(gòu)算法

2019-09-18 10:12:37

遞歸數(shù)據(jù)結(jié)構(gòu)

2023-08-29 09:46:12

SQLCTE遞歸

2021-04-25 09:42:40

SQL遞歸SQL Server

2009-11-18 16:47:50

PHP遞歸算法

2019-06-26 09:10:07

操作系統(tǒng)調(diào)度算法

2020-10-14 08:32:08

算法遞歸面試

2009-09-02 18:39:34

C#遞歸算法

2022-01-27 22:50:01

鏈表雙指針結(jié)構(gòu)

2009-09-28 10:09:09

Linux內(nèi)核Linux循環(huán)鏈表

2021-08-03 08:13:47

數(shù)據(jù)

2020-03-31 08:37:31

遞歸單鏈表反轉(zhuǎn)

2009-07-20 17:41:59

Java JDBC

2022-03-15 08:36:46

遞歸查詢(xún)SQL
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美日日日日bbbbb视频 | 午夜影院污| 91精品国产乱码久久久久久久久 | 国产精品福利在线观看 | 黄页网址在线观看 | 欧美操操操 | 日韩欧美三区 | 免费在线毛片 | 91精品国产色综合久久不卡98口 | 99re热这里只有精品视频 | 久久精品国产99国产 | 99久久久99久久国产片鸭王 | 国产91九色 | 日日干天天操 | 青青草原精品99久久精品66 | 九九久久在线看 | 91成人 | a网站在线观看 | 国产免费一区二区三区最新6 | 在线亚洲精品 | 日日摸天天添天天添破 | 日本涩涩视频 | 午夜精品一区二区三区在线播放 | 男人天堂久久 | 91在线观看免费视频 | 欧美日韩精品中文字幕 | 国产视频91在线 | 国产乱码精品1区2区3区 | 中文在线а√在线8 | 国产乱码精品一品二品 | 亚洲影音 | 鲁大师一区影视 | 日本一区二区三区在线观看 | 天天操网 | yiren22综合网成人 | 欧美精品被 | 欧美区日韩区 | 日韩黄色免费 | 日韩在线成人 | 国产精品不卡视频 | 成人一区二区三区 |