Leetcode鍊錶刷題 pytho語言

2021-09-26 19:55:31 字數 1272 閱讀 5333

為方便後續的使用查詢,記錄一下

函式包括:找到兩個單鏈表相交的起始節點、反轉單鏈表、刪除鍊錶中等於給定值 val 的所有節點

# definition for singly-linked list.

class listnode(object):

def __init__(self, x):

self.val = x

self.next = none

class solution(object):

def getintersectionnode(self, heada, headb):

""":type head1, head1: listnode

:rtype: listnode

""""""

編寫乙個程式,找到兩個單鏈表相交的起始節點。

"""# 將兩個鍊錶拼接分別為長-短和短長,當值相等時則找到相交點,反之則不相交

p, q = heada, headb

while p != q:

p = p.next if p else headb

q = q.next if q else heada

return p

"""

反轉單鏈表

"""def reverselist(self, head: listnode) -> listnode:

# 頭插法

prev = none

cure = head

while cure:

next = cure.next

cure.next = prev

prev = cure

cure = next

return prev

"""刪除鍊錶中等於給定值 val 的所有節點

"""def removeelements(self, head: listnode, val: int) -> listnode:

if not head:

return head

p = head

while p.next:

if p.next.val == val:

p.next = p.next.next

else:

p = p.next

if head.val == val:

if head.next:

head = head.next

else:

head = none

return head

leetcode刷題 鍊錶篇

class solution return result class solution class solution return cura 注 思路 相交節點到尾部的節點數是一樣的,所以當cura遍歷到尾部時,再從headb開始遍歷,同當curb遍歷到尾部時,再從heada開始遍歷,他們指標相遇時...

Leetcode刷題鍊錶之環形鍊錶

給定乙個鍊錶,判斷鍊錶中是否有環。定義兩個指標,從頭節點開始,兩個指標都向右移動,但是設定他們的移動速度不一樣,如果為環形鍊錶,則指標肯定會相遇。若為直鏈表,兩個指標至少有乙個為空。definition for singly linked list.class listnode public cla...

LeetCode刷題之路 鍊錶(2)

83.刪除排序鍊錶中的重複元素 簡單 說明 給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。示例 輸入 1 1 2 3 3 輸出 1 2 3 解答 解法一 迭代法,需考慮到連續多個 三個及三個以上節點相等的情況 class solution else pre.next null ret...