鍊錶(linked list)是由一組被稱為結點的資料元素組成的資料結構,每個結點都包含結點本身的資訊和指向下乙個結點的位址。由於每個結點都包含了可以鏈結起來的位址資訊,所以用乙個變數就能夠訪問整個結點序列。也就是說,結點包含兩部分資訊:一部分用於儲存資料元素的值,稱為資訊域;另一部分用於儲存下乙個資料元素位址的指標,稱為指標域。鍊錶中的第乙個結點的位址儲存在乙個單獨的結點中,稱為頭結點或首結點。鍊錶中的最後乙個結點沒有後繼元素,其指標域為空。
單鏈表的結構見
題目:給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回 null。
為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鍊錶中沒有環。
說明:不允許修改給定的鍊錶。
示例:輸入:head = [3,2,0,-4], pos = 1
輸出:tail connects to node index 1
解釋:鍊錶中有乙個環,其尾部連線到第二個節點。
**:
class
solution
(object)
: def detectcycle
(self, head)
:"""
:type head: listnode
:rtype: listnode
"""a =
while head:
if head in a:
return head
else
: a[head]=0
head = head.next
return none
**:
class
solution
(object)
: def detectcycle
(self, head)
:"""
:type head: listnode
:rtype: listnode
"""if not head:
return none
fast = slow = head
while fast.next and fast.next.next:
fast = fast.next.next
slow = slow.next
if slow == fast:
m = head
while slow != m:
m = m.next
slow = slow.next
return m
return none
示例:
輸入: 1->2->3->4->5->null
輸出: 5->4->3->2->1->null
思路:迴圈反轉
**:
class
solution
(object)
: def reverselist
(self, head)
:"""
:type head: listnode
:rtype: listnode
"""if not head:
return none
q = head
cur = none
pre = none
while q:
cur = q.next
q.next = pre
pre = q
q = cur
return pre
鍊錶 環形鍊錶
環形鍊錶也叫迴圈鍊錶 可以是雙鏈表 也可以是單鏈表 操作原理和單鏈表差不多,只是最後乙個節點不在指向空 null 而是頭 head 這裡以單鏈表舉例 description 環形鍊錶 author lzq date 2018 11 3 20 46 version 1.0 public class a...
鍊錶 環形鍊錶
題目描述 給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。注意,pos 僅僅是用於標識環的情況,並不會作為引數傳遞到函式中。說明 不允...
環形鍊錶 鍊錶
題目 給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數pos來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果pos是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示例 2 輸入...