LeetCode 推斷鍊錶中是否有環

2021-09-07 10:45:40 字數 626 閱讀 1688

思路:使用兩個節點。slow和fast,分別行進1步和2步。假設有相交的情況,slow和fast必定相遇;假設沒有相交的情況,那麼slow或fast必定有乙個為null

相遇時有兩種可能:

1. 僅僅是節點相交的情況,即:slow == fast可是 slow.next != fast.next

2. 鍊錶中存在環,即slow == fast 並且 slow.next == next

實現**:

public bool hascycle(listnode head) 

if(head.val != head.next.val && head.next.next == null)

var slow = head;

var fast = head;

while(true)

else

if(slow == null || slow.next == null || fast == null || fast.next == null)

if(slow.val == fast.val && slow.next.val == fast.next.val)

}return false;

}

LeetCode141判斷鍊錶中是否有環

給定乙個鍊錶,判斷鍊錶中是否有環。如果鍊錶中有某個節點,可以通過連續跟蹤 next 指標再次到達,則鍊錶中存在環。3.1使用雜湊表 遍歷鍊錶,將每乙個節點存入乙個雜湊表中,利用雜湊表不能儲存相同元素的特性,判斷是否儲存成功,如果不成功,則存在環 public boolean hascycle1 li...

鍊錶是否相交,鍊錶是否有環問題

1 乙個單鏈表,判斷是否有環,環的入口節點 分析 兩個指標,慢指標一次走一步,快指標一次走兩步,如果有環肯定會相交 listnode pnode bool i istloop listnode head return false 找出環的入口 環入口到相遇點為x,從開始到環入口點長度為a,環長為r,...

leetcode 鍊錶 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?head null 空鍊錶,回文,返回true head.next null 只有乙個節點的列表,回文,返回tru...