為方便後續的使用查詢,記錄一下
函式包括:找到兩個單鏈表相交的起始節點、反轉單鏈表、刪除鍊錶中等於給定值 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...