LeetCode演算法題 環形鍊錶

2021-10-03 15:50:57 字數 1430 閱讀 1854

給定乙個鍊錶,判斷鍊錶中是否有環。

為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鍊錶中沒有環。

示例1:

輸入:head = [3,2,0,-4], pos = 1

輸出:true

解釋:鍊錶中有乙個環,其尾部連線到第二個節點。

示例 2:

輸入:head = [1,2], pos = 0

輸出:true

解釋:鍊錶中有乙個環,其尾部連線到第乙個節點。

示例 3:

輸入: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...