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

遞歸算法中的鏈表操作

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

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

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

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

解法一

逐層遞歸,遍歷到最后一個節(jié)點(diǎn),并從返回的節(jié)點(diǎn)一次向后遞歸,遍歷N次,找到倒數(shù)第N個節(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. 時間復(fù)雜度為O(index * n),n為鏈表的長度。

3. 性能開銷較大。

解法二(解法一的變形)

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

  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; 
定義一個全局變量,用來計(jì)數(shù),當(dāng)遞歸從最后一個節(jié)點(diǎn)返回時,計(jì)數(shù)器減減,當(dāng)?shù)扔?時,這個節(jié)點(diǎn)即是要找的倒數(shù)第N個節(jié)點(diǎn)分析
1. 兩個輔助變量。
2. 時間復(fù)雜度為O(n)。
3. 多余的index,累贅的counter。
責(zé)任編輯:彭凡 來源: 博客園
相關(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ù)據(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遞歸算法

2009-09-02 18:39:34

C#遞歸算法

2020-10-14 08:32:08

算法遞歸面試

2019-06-26 09:10:07

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

2022-01-27 22:50:01

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

2020-03-31 08:37:31

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

2009-09-28 10:09:09

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

2021-08-03 08:13:47

數(shù)據(jù)

2009-07-20 17:41:59

Java JDBC

2022-03-15 08:36:46

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

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

主站蜘蛛池模板: 久久人人爽人人爽人人片av免费 | 欧美一区二区三区在线 | 国产成人在线视频 | 99精品网 | 日日操av | 亚洲高清电影 | 亚洲精品乱码久久久久久按摩观 | av在线播放网站 | www亚洲免费国内精品 | 亚洲欧美日韩国产 | 久久久久久久91 | 91资源在线 | 亚洲精品福利视频 | 国产日产精品一区二区三区四区 | 成人在线影视 | 国产在线一区二区三区 | 欧美在线日韩 | 一区2区 | 国产亚洲精品精品国产亚洲综合 | 日韩久久久久 | 欧美精品在线一区二区三区 | 国产精品一区在线播放 | 亚洲在线观看视频 | av免费观看在线 | 亚洲欧美久久 | 久久精品久久精品 | 国产视频1区 | 国产日产精品一区二区三区四区 | 丝袜 亚洲 另类 欧美 综合 | 国产精品视频一区二区三区 | 99免费精品视频 | 午夜成人在线视频 | 成人免费区一区二区三区 | 欧美精品一区二区免费 | 九九热最新视频 | 精品日韩一区二区 | 亚洲精品99 | 色综合九九 | 999观看免费高清www | 精品久久久久一区二区国产 | 成人在线一区二区 |