給定乙個鍊錶,判斷鍊錶中是否有環。示例1:為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鍊錶中沒有環。
輸入:head = [3,2,0,-4], pos = 1示例 2:輸出:true
解釋:鍊錶中有乙個環,其尾部連線到第二個節點。
輸入:head = [1,2], pos = 0示例 3:輸出:true
解釋:鍊錶中有乙個環,其尾部連線到第乙個節點。
輸入:head = [1], pos = -1迭代鍊錶,利用雜湊表儲存元素,儲存前進行判斷,如果重複,則該鍊錶有環。輸出:false
解釋:鍊錶中沒有環。
/**
* definition for singly-linked list.
* class listnode
* }*/public
class
solution
listset.
add(head)
; head = head.next;
}return
false;}
}
使用快慢指標,如果兩者最後相遇,則必存在環。
/**
* definition for singly-linked list.
* class listnode
* }*/public
class
solution
listnode slow = head;
listnode fast = head.next;
while
(slow != fast)
slow = slow.next;
fast = fast.next.next;
}return
true;}
}
第一種:
時間複雜度:迭代了鍊錶中n個元素,時間複雜度為o(n),向表中新增乙個元素耗費o(1),故複雜度o(n).
第二種:
來自官方解答:
Leetcode刷題鍊錶之環形鍊錶
給定乙個鍊錶,判斷鍊錶中是否有環。定義兩個指標,從頭節點開始,兩個指標都向右移動,但是設定他們的移動速度不一樣,如果為環形鍊錶,則指標肯定會相遇。若為直鏈表,兩個指標至少有乙個為空。definition for singly linked list.class listnode public cla...
LeetCode 初級演算法 環形鍊錶
給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示例 2 輸...
LeetCode第141題 環形鍊錶
給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。defini...