日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

找出带环单向链表的环入口(交点)

發布時間:2024/4/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 找出带环单向链表的环入口(交点) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

其實這個問題已經被問爛了,但是之前沒有想透,今天算是解決得差不多。

找環的入口這個問題,其實是建立在另外一個問題之上的——判斷單向鏈表是否有環

土方法很多,但是比較好的目前就那么一個:一開始設置兩個指針都指向表頭,其中一個每次(一步)前進一個節點的叫p1,另外那個每次(一步)前進兩個節點的叫p2 。p1和p2同時走,當其中有一個遇到null,就證明鏈表沒有環。如何某個時刻(假設走了n步之后),p1和p2指向的地址相同,那么鏈表就是有環的。

接著很自然的問題就是,環的入口在哪里?

我是先看了答案,再去推導的,但是為了各位能夠順著思路,我下面就嘗試用順推的方式來展現結果,但是這樣做有個不好的地方,可能有人在看完答案后會想:“我去,怎么可能想到”,這個時候由于直接看推導了,連自己推導的機會都沒有,所以我建議各位先自己嘗試想一下,想不出的話,你可以選擇兩條路:

1. 直接看答案,然后推導,答案在此【在p1和p2重合后,設置一個p3指向表頭,然后p1和p3每次同時行走一步,每步前進一個節點,等到p1和p3重合時,重合的位置就是環的入口】,反選就可以看到;

2. 看順推的過程,不知道答案,但是自己看了后也沒有辦法從答案推導了,因為我已經告訴你推導方法了……要走這條路的請往下拉吧……










先看下面這張圖:


我們設鏈表的無環的部分長度為L1,即有L1個節點,注意,這個L1是包括環的入口節點的。然后讓環的長度是L2,這個L2也是包括環的入口節點。這個時候,p1和p2的交點如圖所示,交點距離環的入口節點為a(從入口節點沿著行走方向走到交點),即在環的入口節點后面的第a個節點,就是交點,我用紅色標記出a。

然后我們來考察一下L1,L2,a,以及n(n是走過的步數,不是走過的節點數,p1一步一個節點,p2一步兩個節點)的關系。

忘記說一點了,我們可以明確的是,p1在進入環后,走了不到一圈就在交點處和p2重合,為什麼肯定沒有走完一圈?因為p1在進入環的時候,p2和p1之間的距離(沿著行走方向)至多為 L2-1,不可能超過L2-1,因為環的大小也才只有L2 。p2追趕p1,最多只需要走L2-1步,因為每走一步,p1和p2的相對距離減小1,那么p1最多只走了L2-1步,就是最多只經過了L2-1個節點,不可能走完一圈。

現在可以列公式了:

L1+a=n ? ? ? ? ? ? ? ? ? #1 ? //n是p1走過的節點數

L1+k*L2+a=2*n ? ? #2 ? //2*n這個是p2走過的節點數,其中的k表示p2可能在環里面走了k圈,k>=1

由#2式減去#1式,有:

k*L2 = n ? ? ? ? ? ? ? ? ? #3

同時由#1和#3得到:

L1+a = k*L2 ? ? ? ? ? ?#4

接著由#4就得到了如下式:

L1 = k*L2 - a = (k-1)*L2 + (L-a)

得到這條式子就撥得云開見月明啊有木有,因為(L-a)表示的是交點與環入口的距離(從交點沿著行走方向到環入口),然后(k-1)是>=0的,因為p2在環中至少繞了一圈,這樣我們就發現:L1的長度 = 環長度的整數倍 + 交點與環入口的距離

也就是說,p1再走L1步就可以達到環的入口。問題是L1不是已知的,沒關系,在表頭設置一個p3指針,p3每步前進一個節點。讓p1和p3同時走,每次走1步,等p3和p1重合了,就是到了環口的位置了。Problem solved~


?

總結

以上是生活随笔為你收集整理的找出带环单向链表的环入口(交点)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲国产www| 福利视频免费观看 | 国产久精品| 欧美成人午夜77777 | 国产精品99久久久久久动医院 | 欧美又粗又大xxxxbbbb疯狂 | 超污视频软件 | 一本一道波多野结衣av黑人 | 免费20分钟超爽视频 | 巨乳美女被爆操 | 日韩一级片中文字幕 | 亚洲第一区在线观看 | 草青青视频 | av私库| 国产精品一区二区久久 | 国产精品一区二区三区在线免费观看 | 男人天堂2019| 91在线影院 | 欧美性第一页 | 伊人久久青草 | 在线国产欧美 | 人人爽人人爱 | 在线欧美a | 久操资源网 | 亚洲精品成人网 | 亚a在线| 国产精品国色综合久久 | 午夜电影福利网 | 国产免费久久精品国产传媒 | 欧美一区网站 | 97久久免费视频 | 欧美在线专区 | 中文字幕日韩精品一区 | 蜜臀麻豆 | 日韩香蕉网 | 亚洲不卡视频在线观看 | 夜夜爽日日澡人人添 | 欧美日韩一区二区在线 | 成人片网址 | 日本在线视频不卡 | 黄色网址av | 亚洲AV无码国产精品国产剧情 | 男人插女人免费视频 | av性在线 | 欧美日韩精品一区二区三区视频播放 | 日本国产一区二区三区 | 九九av在线 | www黄色片网站| 色婷婷一区二区 | 九草影院 | 欧美成人久久久 | 亚洲欧美日本一区二区三区 | 美女一级黄色片 | 国产a级免费 | 日本免费网站视频 | 亚洲乱码中文字幕久久孕妇黑人 | 日韩午夜在线 | 中国女人裸体乱淫 | 婷婷国产成人精品视频 | 日日舔夜夜操 | 欧美在线精品一区二区三区 | 国产精品suv一区二区 | 最近最新中文字幕 | 欧美黄色免费在线观看 | 久久久久中文字幕亚洲精品 | 日韩中出 | 森泽佳奈作品在线观看 | 亚洲欧美国产精品专区久久 | 久久久三级 | 日韩精品视频在线观看免费 | 国产在线精品视频 | 制服丝袜一区在线 | 污黄视频在线观看 | 五月婷婷免费视频 | 长河落日电视连续剧免费观看01 | 无码精品国产一区二区三区免费 | 一个色av| 日韩在线视频免费播放 | 麻豆天天躁天天揉揉av | 中文字幕亚洲欧美日韩在线不卡 | av在线资源站| 日批毛片| 亚洲国产三级 | 久久偷拍免费视频 | 久久99精品波多结衣一区 | 精品伦理一区二区 | 一区二区三区免费毛片 | 亚洲日本护士毛茸茸 | 成人污污视频 | 99久久久无码国产精品衣服 | 99久久影院| 久操伊人 | 黄色男同视频 | 性盈盈影院中文字幕 | 国产精品黄 | 日韩精品一区二区三区在线播放 | 91精品一区二区三区综合在线爱 | 天天操夜操 | 麻豆视频网址 |