【算法】漫画:如何找到链表的倒数第n个结点?
生活随笔
收集整理的這篇文章主要介紹了
【算法】漫画:如何找到链表的倒数第n个结点?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
—————? 第二天? —————
什么意思呢?我們以下面這個鏈表為例:
給定鏈表的頭結點,但并不知道鏈表的實際長度,要求我們找到鏈表的倒數第n個結點。
假設n=3,那么要尋找的結點就是元素1:
如何利用隊列呢?小灰的思路如下:
1.創建一個長度為n的隊列,遍歷原始鏈表,讓結點逐一進入隊列:
2.當隊列已滿時,讓隊尾元素出隊,新結點入隊:
3.當鏈表全部結點遍歷完畢時,隊尾的元素就是倒數第n個結點(因為隊列長度是n):
————————————
首先,我們創建兩個指針P1和P2,P1指向鏈表的頭結點,P2指向鏈表的正數第n個結點(也就是例子中的第3個結點):
接下來,我們讓指針P1和P2同時循環右移,每次右移一步,直到指針P2移動到鏈表的末尾:
此時,由于P2指向鏈表的尾結點,且P1和P2的距離是n-1,因此P1所指的結點就是我們要尋找的鏈表倒數第n個結點:
顯然,這個方法從頭到尾只需要對鏈表做一次遍歷,而且僅僅使用了兩個指針,算法的空間復雜度是O(1)。
—————END—————
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【算法】漫画:如何找到链表的倒数第n个结点?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习基础】机器学习中的特征工程总结
- 下一篇: 【工作相关】公子龙:工作后我变强了,暂时