数据结构链表之单链表的快慢指针——3
生活随笔
收集整理的這篇文章主要介紹了
数据结构链表之单链表的快慢指针——3
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
單鏈表之快慢指針
單鏈表的快慢指針簡介
- 快慢指針指鏈表中定義兩個指針,兩個指針的移動速度一快一慢,一般快指針移動步長為慢指針的兩倍
快慢指針適合解決的幾個典型問題
先定義一個簡單的節點
class Node:def __init__(self, item):self.item = itemself.next = Nonefirst = Node('aa') second = Node('bb') third = Node('cc') forth = Node('dd') fifth = Node('ee')first.next = second second.next = third third.next = forth forth.next = fifth
中間值問題
即當快指針fast遍歷完鏈表時,慢指針slow剛好停在鏈表的中間處
中間位置對應的結點是cc
有環鏈表
- 有環鏈表定義:單鏈表中存在結點的指針往前指的鏈表稱為有環鏈表
為鏈表創建一個環,執行has_ring函數返回True,注釋創建的環,則返回False
有環鏈表入口
- 定義:當快慢指針相遇時,我們可以判定鏈表中存在環,此時,重新定義一個指針,指向鏈表的起點,這個指針的前進步長與慢指針的相同,當慢指針與“新”指針相遇時,所在節點就是環的入口
證明這一結點設計到數論知識,有興趣可以研究,這里只進行實現
在有環鏈表的前提上,使用以下代碼可判斷環的入口
前面的有環鏈表時aa→bb→cc→dd→ee(→cc),因此其環入口是cc對應所在的節點
The entrance is: cc
總結
以上是生活随笔為你收集整理的数据结构链表之单链表的快慢指针——3的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Pytorch神经网络理论篇】 05
- 下一篇: 【Pytorch神经网络理论篇】 04