具体思路代码中有注释
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
'''计算l1对应的整数。如1->2->3对应整数123'''
l1_sum = 0
while l1:
l1_sum = l1_sum * 10 + l1.val
l1 = l1.next
'''计算l2对应的整数'''
l2_sum = 0
while l2:
l2_sum = l2_sum * 10 + l2.val
l2 = l2.next
'''计算l1 与 l2 对应整数的和'''
my_sum = l1_sum + l2_sum
'''将my_sum表示成链表'''
dummy = ListNode(-1)
cur = dummy
for i in str(my_sum):
cur.next = ListNode(i)
cur = cur.next
return dummy.next
思路:创建一个虚拟结点,cur表示当前指针,pre表示前一个指针。如果cur.val == val,那么pre的next指向cur的下一个结点,同时cur向前移动一位,pre不变;如果cur.val != val,那么cur和pre都向前挪一位。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def removeElements(self, head: ListNode, val: int) -> ListNode:
dummy = ListNode(-1)
dummy.next = head
cur = head
pre = dummy
while cur:
if cur.val == val:
pre.next = cur.next
cur = cur.next
else:
cur = cur.next
pre = pre.next
return dummy.next