久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Golang如何實現單鏈表找環

220次閱讀
沒有評論

共計 973 個字符,預計需要花費 3 分鐘才能閱讀完成。

這篇文章將為大家詳細講解有關 Golang 如何實現單鏈表找環,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

問題:一個單向鏈表,怎樣怎么檢測是否有環,環的初始節點是什么?

package main
import (
  fmt 
type ListNode struct {
 value int
 next *ListNode
func NewListNode(i int) *ListNode { val := new(ListNode)
 val.value = i
 return val
func main() { a1 := NewListNode(1)
 a2 := NewListNode(2)
 a3 := NewListNode(3)
 a4 := NewListNode(4)
 a5 := NewListNode(5)
 // 1→2→3→4→5
 // ↑???? 
 a1.next = a2
 a2.next = a3
 a3.next = a4
 a4.next = a5
 a5.next = a3
 head := DetectCycle(a1)
 fmt.Println(head.value)
func DetectCycle(head *ListNode) *ListNode {
 fast := head
 slow := head
 for {
 if fast.next == nil || slow.next == nil {
 break
 }
 fast = fast.next.next
 slow = slow.next
 if fast == slow {
 //  找到快慢指針相遇點
 break
 }
 }
 if fast == nil || slow == nil {
 return nil
 }
 //  找到快慢指針相遇點后,快慢指針一樣的速度移動,找到環的起點
 slow = head
 for {
 if fast == slow {
 break
 }
 fast = fast.next
 slow = slow.next
 }
 return slow
}

關于“Golang 如何實現單鏈表找環”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計973字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 特克斯县| 洮南市| 兴化市| 辽宁省| 交城县| 金堂县| 波密县| 石屏县| 富阳市| 孟津县| 宁都县| 满洲里市| 车致| 墨脱县| 铁岭县| 红河县| 新闻| 祁阳县| 鄂托克旗| 禹城市| 吴堡县| 吴江市| 揭东县| 离岛区| 射洪县| 探索| 崇礼县| 义马市| 濮阳市| 渭南市| 巴里| 福海县| 峨山| 阿拉善左旗| 新闻| 辰溪县| 安泽县| 游戏| 高青县| 右玉县| 临洮县|