精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊獲取鏈表中倒數第K個節點

開發 前端
假設整個鏈表有n個節點,那么倒數第K個節點就是從頭節點開始的第n-K+1個節點。如果我們能夠得到節點數n,那么只需要從頭節點開始往后走n-k+1步就可以了。

前言

給定一個單向鏈表的頭節點,如何獲取該鏈表中倒數第K個節點(從1開始計數)?本文將帶著大家一起解決這個問題,歡迎各位感興趣的開發者閱讀本文。

思路分析

我們通過一個例子來做進一步的分析:

  • 準備一個鏈表,它有6個節點,從頭節點開始,其值依次為:1、3、5、9、15、21。
  • 獲取該鏈表的倒數第3個節點。

遍歷兩次鏈表

根據單向鏈表的定義,我們可知:想要獲取它的某個節點,只能從頭節點開始順著其指針往后查找。假設整個鏈表有n個節點,那么倒數第K個節點就是從頭節點開始的第n-K+1個節點。如果我們能夠得到節點數n,那么只需要從頭節點開始往后走n-k+1步就可以了。想要得到節點數n,就需要定義一個變量,從頭開始遍歷鏈表,每經過一個節點,這個變量就自增1。

也就是說,我們需要遍歷鏈表兩次,第一次計算出鏈表中節點的個數,第二次就能獲取倒數第K個節點,如下圖所示:

  • 第1次遍歷鏈表拿到了鏈表的長度n=6。
  • 第2次遍歷鏈表獲取到了倒數第3個節點處(6-3+1)的值9。

圖片

遍歷一次鏈表

遍歷兩次鏈表來解決這個問題并不是最優解,我們換個思路來考慮下這個問題:準備兩個指針。

  • 第一個指針從鏈表的頭部開始遍歷向前走k-1(3-1=2)步,第二個指針保持不動。
  • 從第k步開始,第二個指針也開始從鏈表的頭指針開始遍歷,兩指針同時向前走。
  • 由于兩個指針的距離始終保持在k-1,當第一個指針到達鏈表的尾節點時,第二個指針正好指向倒數第k個節點。

圖片

實現代碼

通過上面的分析,我們知道了如何用雙指針的思路,只遍歷一次鏈表就能獲取鏈表的倒數第K個節點。接下來,我們來看下代碼實現。

首先,我們設計一個名為GetLinkedListNode的類:

  • 內部有2個私有變量。

pNext P1指針;

pHead P2指針。

  • 構造方法接受1個參數:鏈表頭節點。

對參數進行校驗;

修改兩個指針的指向:默認指向鏈表頭節點。

export class GetLinkedListNode {
// p1指針
private pNext: ListNode;
// p2指針(與p1指針的距離始終保持在k-1)
private pHead: ListNode;

constructor(listHead: ListNode) {
if (listHead == null) {
throw new Error("鏈表頭節點不能為空");
}

// 初始化兩個指針指向
this.pNext = listHead;
this.pHead = listHead;
}

上述代碼中,我們用了一個自定義類型ListNode,它描述了一個鏈表的節點應該包含哪些屬性,對此感興趣的開發者請移步我的另一篇文章:鏈表與變相鏈表的實現。

緊接著,實現獲取倒數第K個節點函數:

  • 接受一個參數K(從1開始),對參數進行有效性校驗。
  • 修改p1指針的指向,將其指向k-1節點,k的范圍也要做一下規避處理(其值大于鏈表總節點數)。
  • 同步修改p1、p2指針的指向,直至p1指針指向尾節點,p2指針正好指向倒數第K個節點。
// 獲取倒數第K個節點
getCountdownNode(k: number): ListNode {
if (k <= 0) {
throw new Error("需要獲取的倒數節點數必須大于0");
}

// p1指針先走,將其指向鏈表的k-1位置
for (let i = 0; i < k - 1; i++) {
// k可能出現大于鏈表總節點的情況,需要進行規避
if (this.pNext.next != null) {
this.pNext = this.pNext.next;
} else {
throw new Error("需要找的節點不存在");
}
}

// 兩個指針同時向前走,直至p1指針指向尾節點
while (this.pNext.next) {
this.pNext = this.pNext.next;
if (this.pHead.next) {
this.pHead = this.pHead.next;
}
}

// p2節點正好指向倒數第K個節點
return this.pHead;
}

完整代碼請移步:GetLinkedListNode.ts。

小tips:我們在寫代碼的時候,一定要盡可能地考慮各種邊界情況的處理,最大程度的避免一些錯誤的發生,提升代碼的健壯性。

例如上述代碼中所做的處理,最大程度的避免了程序因取不到值而引發的異常報錯問題,我們也管這種做法稱為防御性編程。

這是一種良好的編程習慣,在編寫代碼的時候多問問自己“如果不······那么······”這樣的問題,提前預見在什么地方可能會出現問題,并為這些可能出現的問題制定處理方式。這樣,當異常情況發生時,軟件的行為也盡在我們的掌握之中,而不至于出現不可預見的事情。

測試用例

接下來,我們將前言中的例子代入上個章節所實現的函數中,驗證下它能否得出正確的結果。

const linkedList = new LinkedList();
linkedList.push(1);
linkedList.push(3);
linkedList.push(5);
linkedList.push(9);
linkedList.push(15);
linkedList.push(21);

const getLinkedListNode = new GetLinkedListNode(linkedList.getHead());
const resultNode = getLinkedListNode.getCountdownNode(3);
console.log(resultNode);

運行結果如下所示,成功的解決了文章前言中所講的問題。

圖片

完整代碼請移步:GetLinkedListNode-test.ts。

注意:上述代碼中用到的LinkedList是自定義的一個類,它實現了鏈表這個數據結構。

示例代碼

本文所列舉的代碼,其完整版請移步:

  • GetLinkedListNode.ts
  • GetLinkedListNode-test.ts
責任編輯:武曉燕 來源: 神奇的程序員
相關推薦

2021-08-10 07:57:03

算法鏈表倒數

2021-02-03 13:23:42

鏈表倒數結點

2022-01-17 09:23:02

LeetCode刪除鏈表算法

2021-04-14 10:19:18

鏈表倒數結點

2020-10-19 13:27:19

鏈表倒數結點

2023-04-17 07:33:11

反轉鏈表移除鏈表

2022-03-01 07:52:38

鏈表指針節點

2012-06-19 14:23:04

云計算中國

2012-02-17 09:45:04

網速手機

2012-02-17 09:43:13

手機網速移動互聯

2012-08-10 10:53:03

云計算BSA商業軟件聯盟

2012-06-18 10:07:17

云計算實力榜

2022-02-16 09:12:22

LeetCode升序鏈表鏈表數組

2021-08-14 09:48:02

ReentrantLock多線編程

2021-11-05 07:59:25

HashMapJava知識總結

2025-07-25 09:02:56

2022-08-28 19:36:15

數據分片KafkaRocketMQ

2021-09-22 22:57:41

手機流量通信

2018-03-01 13:32:28

宏碁游戲本PC行業

2019-11-01 11:19:25

轉鏈表LeetCode代碼
點贊
收藏

51CTO技術棧公眾號

欧美精品久久久久a| 欧美性猛片aaaaaaa做受| 国产伦精品一区二区| 欧美一级片免费在线观看| 亚洲欧美成人vr| 欧美日韩精品一区二区三区四区 | 午夜视频在线免费看| av电影院在线看| 中文字幕精品一区| 国产精品一区二区三区不卡| 国产女主播喷水视频在线观看| 图片小说视频色综合| 亚洲黄色www| 在线观看免费av网址| av男人的天堂在线观看| 国产精品大尺度| 久久综合久久久| a级片免费视频| 免费看欧美女人艹b| 午夜精品理论片| 黄色一级大片在线免费观看| 中文字幕伦av一区二区邻居| 日韩欧美一卡二卡| mm131亚洲精品| 26uuu亚洲电影| 亚洲一区二区三区小说| 亚洲欧美精品| 你懂的免费在线观看| 国产不卡一区视频| 成人在线视频网| 色老头在线视频| 亚洲自啪免费| 午夜精品久久久久久久久久久久| 加勒比婷婷色综合久久| 日本成人小视频| 亚洲美女性视频| yy1111111| 超碰成人在线免费| 日韩丝袜情趣美女图片| 久久国产这里只有精品| 日韩成人动漫| 欧美特黄级在线| 男女猛烈激情xx00免费视频| 欧美高清视频| 国产精品第五页| 中日韩在线视频| 四虎久久免费| 国产精品视频第一区| 日本最新一区二区三区视频观看| 无码国产精品一区二区色情男同| 国产福利91精品| 亚洲自拍欧美色图| www国产在线| 国产成人综合在线观看| 92国产精品视频| 99在线小视频| 国产精品一区二区三区99| 亚洲一区二区三区四区视频| 国产美女三级无套内谢| 精品亚洲国内自在自线福利| 国产免费观看久久黄| 在线观看免费高清视频| 久88久久88久久久| 91黄色精品| 欧性猛交ⅹxxx乱大交| 成人黄色大片在线观看| 久久精品国产精品青草色艺| 无码精品视频一区二区三区| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美激情www| 成人午夜电影在线观看| 成人免费一区二区三区视频| 婷婷视频在线播放| 欧美性受ⅹ╳╳╳黑人a性爽| 亚洲午夜久久久久中文字幕久| 成年人看的毛片| 亚洲精品88| 欧美日韩一级大片网址| 久久久久久久久久毛片| 97一区二区国产好的精华液| 日韩av资源在线播放| 在线观看国产精品一区| 91麻豆精品国产91久久久平台 | 欧美精品一区二区久久婷婷| 2一3sex性hd| 国产成人调教视频在线观看| 日韩亚洲在线观看| 国产无遮无挡120秒| 日韩国产精品久久久| 91久久精品日日躁夜夜躁国产| 国产激情久久久久久熟女老人av| www.66久久| 亚洲高清不卡一区| 丁香影院在线| 欧美影院一区二区三区| av电影中文字幕| 国产免费播放一区二区| 欧美成人中文字幕| 不卡av电影在线| 国产精品18久久久久久久网站| 久久久精品动漫| 麻豆av在线免费看| 欧美视频在线观看免费| 日本亚洲一区二区三区| 亚洲人成网站77777在线观看| 久久久精品久久久| 中文字幕av影院| 国产91精品在线观看| 日韩精品欧美专区| 24小时免费看片在线观看| 欧美日高清视频| 在线观看国产网站| 午夜精品偷拍| 国产精品女主播视频| 天天躁日日躁狠狠躁喷水| ●精品国产综合乱码久久久久| 337p粉嫩大胆噜噜噜鲁| 视频一区中文字幕精品| 中文字幕日韩欧美| 日本va欧美va国产激情| 国产成人午夜片在线观看高清观看| 欧洲一区二区在线| 国产高清视频色在线www| 欧美一区二区视频网站| 毛片久久久久久| 久久影院亚洲| 久久99精品国产一区二区三区| 伊人222成人综合网| 欧美人xxxx| 男人天堂资源网| 日韩精品乱码av一区二区| 精品国产乱码久久久久| 欧美videos另类精品| 制服.丝袜.亚洲.中文.综合| 色屁屁草草影院ccyy.com| 亚洲一区二区毛片| 精品亚洲第一| 大桥未久在线视频| 亚洲第一网中文字幕| 麻豆一区产品精品蜜桃的特点| 国产一区三区三区| 大桥未久一区二区三区| 日韩三级一区| 精品国偷自产在线| 国产精品一区二区三区在线免费观看 | 五月天精品一区二区三区| 色婷婷狠狠18禁久久| 欧美 日韩 国产 一区| 国产有码在线一区二区视频| 成人在线播放视频| 欧美喷水一区二区| 夫妻性生活毛片| 国产乱妇无码大片在线观看| 青青在线视频免费观看| 综合视频一区| 国自在线精品视频| 免费成人av电影| 欧美性淫爽ww久久久久无| 久久久久亚洲AV成人无在 | 黑人巨大精品欧美一区免费视频 | 视频午夜在线| 色视频欧美一区二区三区| 精品无码国产污污污免费网站 | 中国男女全黄大片| 激情久久五月| 欧美一区激情视频在线观看| 亚洲天堂一区二区| 色777狠狠综合秋免鲁丝| 国产精品毛片一区视频播| 一区二区三区在线观看欧美| 国产xxxx视频| 久久久久国产精品一区二区 | 短视频在线观看| 日韩精品国产精品| 国产91porn| 天天久久夜夜| 国产精品在线看| 四季久久免费一区二区三区四区| 亚洲精品国产美女| 中文字幕一区二区久久人妻| 亚洲免费观看高清完整版在线观看 | 亚洲综合偷拍欧美一区色| 艳妇乳肉亭妇荡乳av| 日韩av在线播放中文字幕| 99re8这里只有精品| 老司机在线精品视频| 国产精品免费久久久久影院| 五月天激情在线| 亚洲欧美国产va在线影院| 国产又黄又粗又猛又爽| 精品毛片网大全| 制服丨自拍丨欧美丨动漫丨| 波多野结衣在线一区| 自拍偷拍21p| 亚洲精选一区| 伊人激情综合| 91综合免费在线| 亚洲人成午夜免电影费观看| www.久久久久久.com| 污污网站免费在线观看| 91麻豆精品国产综合久久久久久| 日韩视频免费观看高清| 国产精品久久二区二区| 182在线视频| 国产一区二区导航在线播放| 日本黄网站免费| 欧美午夜电影在线观看 | 日本高清免费观看| 日日欢夜夜爽一区| 热99这里只有精品| 影音先锋日韩精品| 亚洲精品在线观看免费| 亚洲成aⅴ人片久久青草影院| 91网站免费看| 成人黄色视屏网站| 青草成人免费视频| 丰乳肥臀在线| 久久国产精品首页| 日本视频在线| 中文字幕日本精品| 国产原创av在线| 亚洲激情小视频| 亚洲精品国产手机| 欧美一级生活片| 一区二区三区亚洲视频| 在线精品亚洲一区二区不卡| 800av免费在线观看| 亚洲成人av电影在线| 国产黄在线免费观看| 国产精品久久综合| 中文字幕黄色网址| 国产日韩一级二级三级| 成人在线视频免费播放| 成人午夜电影小说| 久久久久亚洲av无码网站| 国产在线一区二区| 99中文字幕在线| 激情图片小说一区| 亚洲视频一二三四| 久久成人久久鬼色| 国产三级生活片| 极品少妇一区二区| 中文字幕色网站| 国产毛片一区二区| 久久久久亚洲av片无码v| 国产一区欧美一区| 深夜视频在线观看| 成人福利视频在线看| 国产精品九九视频| 91免费观看视频| 欧美色图亚洲激情| 国产日韩v精品一区二区| 欧美老女人性生活视频| 国产精品久久午夜| 神马久久精品综合| 中文字幕在线一| 国产1区2区3区精品美女| 在线成人精品视频| 成人小视频在线观看| 国产激情视频网站| 久久久久久**毛片大全| 中文字幕免费看| 中文字幕 久热精品 视频在线| 黄色片在线观看免费| 中文字幕在线一区| 亚洲熟女www一区二区三区| 亚洲综合av网| 69成人免费视频| 欧美日韩视频不卡| 国产91免费看| 亚洲欧洲在线播放| 91国内在线| 91精品国产免费久久久久久 | 蜜臀av粉嫩av懂色av| 91小视频在线观看| 欧美88888| 亚洲一二三区不卡| 区一区二在线观看| 4438x成人网最大色成网站| 成人免费一级视频| 亚洲网站在线观看| 在线观看午夜av| 日韩美女激情视频| 免费欧美网站| 青娱乐国产91| 国产精品二区影院| 久久精品网站视频| 国产成人在线视频免费播放| 精品人妻一区二区三区日产乱码卜| 欧美国产禁国产网站cc| 玖玖爱这里只有精品| 日韩欧美亚洲一二三区| 国产精品自产拍| 日韩精品视频在线观看免费| 欧美成人二区| 日本人成精品视频在线| 年轻的保姆91精品| 欧美一区二区综合| 樱桃成人精品视频在线播放| 奇米视频888| 久久综合av免费| 久久国产一级片| 欧美日韩国产乱码电影| 五月婷婷久久久| 欧美精品在线第一页| 国产成人精品一区二区三区免费| 国产精品jizz视频| 一区二区三区国产精华| 黄色一级二级三级| 99久久伊人久久99| 久久久久久欧美精品se一二三四| 欧美日韩国产高清一区| 欧美男男激情freegay| 欧美寡妇偷汉性猛交| 亚洲国产天堂| 日韩视频专区| 国产日韩高清一区二区三区在线| 中文字幕一二三| 成人欧美一区二区三区1314| 波多野结衣日韩| 亚洲精品一区二区在线| av日韩中文| 福利视频久久| 欧美精品首页| 波多野结衣中文字幕在线播放| 中文幕一区二区三区久久蜜桃| 国产精品久久久久久久妇| 日韩精品一区二区三区老鸭窝 | 加勒比av中文字幕| 国产视频一区在线播放| 成年人视频在线免费看| 亚洲精品国产拍免费91在线| 牛牛精品在线| 超碰97网站| 欧美精品国产一区二区| 91精品国产高清91久久久久久| 亚洲三级在线播放| 国产一区二区在线视频聊天| 神马久久桃色视频| 91精品国产色综合久久不卡粉嫩| 亚洲欧美综合一区| 久久99热国产| 东方av正在进入| 欧美一三区三区四区免费在线看 | 精品国产一级毛片| 熟妇人妻无乱码中文字幕真矢织江| 久久精品视频一区| 波多野结衣小视频| 中文字幕亚洲一区在线观看| 国产精品天堂蜜av在线播放| 亚洲高清在线观看一区| 美国十次了思思久久精品导航| 呻吟揉丰满对白91乃国产区| 欧美日韩一区二区在线观看视频| 色视频在线免费观看| 91免费版网站入口| 欧美人成网站| 一本加勒比波多野结衣| 福利二区91精品bt7086| 国产在线一在线二| 国产精品亚洲片夜色在线| 亚洲成av人片乱码色午夜| 精品人妻一区二区三区免费| 一区二区三区成人在线视频| 色婷婷中文字幕| 日韩免费观看在线观看| 久久综合成人| 久久久久久久久久久久国产精品| 偷拍亚洲欧洲综合| 国产黄色在线| 91精品婷婷国产综合久久蝌蚪| 伊人成人在线| 一区二区伦理片| 91精品国产综合久久久久久久久久 | 欧美精品一二区| 免费看日本一区二区| 色噜噜狠狠一区二区| 一区二区三区中文免费| 欧美婷婷久久五月精品三区| 国产欧美一区二区三区视频| 欧美激情一级片一区二区| 亚洲最大成人网站| 在线观看91精品国产麻豆| 波多野结衣精品| 亚洲精品一区二区三区av| 成人午夜碰碰视频| 国语对白做受69按摩| 欧美区在线播放| 国产一区二区三区四区二区| 人妻少妇偷人精品久久久任期| 色综合一个色综合| 日本一本在线免费福利| 欧美日韩在线观看一区二区三区 | 91久久国产综合久久蜜月精品| 99精品欧美| 亚洲女人久久久| 亚洲欧洲国产精品| 99久久香蕉| 精品久久久99| 在线观看亚洲精品视频|