小记录

链表头节点处理

涉及到链表的情况,通常都是先给一个头节点,然后进入循环操作,循环内第一步先 new 一个节点之后切换到当前节点,然后计算更新值,并赋值,最后返回头节点的子节点即可。

例子:

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        prev = 0
        cur1, cur2 = l1, l2
        Root = ListNode(0)
        root = Root
        while cur1 or cur2 or prev != 0:
            root.next = ListNode(0)
            root = root.next

            temp1 = cur1.val if cur1 is not None else 0
            temp2 = cur2.val if cur2 is not None else 0
            res = (temp1 + temp2 + prev)%10
            prev = (temp1 + temp2 + prev)//10

            cur1 = cur1.next if cur1 else None
            cur2 = cur2.next if cur2 else None
            root.val = res

        return Root.next