142 環形鍊錶 II和148 排序鍊錶

2021-10-23 23:21:07 字數 1350 閱讀 8782

class

solution

:def

detectcycle

(self, head: listnode)

-> listnode:

ifnot head or

not head.

next

:return

none

p=q=head# 這裡注意是兩個走相同的距離

while p and q:

p=p.

next

q=q.

next

if q: q=q.

next

else

:return

none

if p==q:

p=head

while p!=q:

p=p.

next

q=q.

next

return p

class

solution

:def

sortlist

(self, head: listnode)

-> listnode:

ifnot head or

not head.

next

:return head

low = head

fast=low.

next

while fast and fast.

next

:# 這裡要找的是中心mid,所以要這麼走

fast=fast.

next

.next

low=low.

next

# 如果長度是2,那麼low指的是前面乙個,如果是前一題,則錯了

mid=low.

next

;low.

next

=none

p=self.sortlist(head)

q=self.sortlist(mid)

du=dummy=listnode(-1

)while p and q:

if p.valdu.

next

=p p=p.

next

else

: du.

next

=q q=q.

next

du=du.

next

du.next

=p if p else q

return dummy.

next

142 環形鍊錶 II

還是快慢指標的問題,當發現有環時,將fast指向head,fast一次向前移動乙個節點,則fast和slow一定會在環的入口相遇.證明 設s為slow指標走的節點個數,m為環的入口距head的位置 則第一次相遇時,fast和head相對於環入口的位置相同,fast在環中的相對於環入口的位置在 2s ...

142 環形鍊錶 II

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回null。說明 不允許修改給定的鍊錶。高階 你是否可以不用額外空間解決此題?definition for singly linked list.struct listnode class solution node set.insert...

142 環形鍊錶 II

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。說明 不允許修改給定的鍊錶。示例 1 輸入 head 3,2,0,4 pos 1 輸出...