题解 | #链表相加(二)#

链表相加(二)

https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param head1 ListNode类 
# @param head2 ListNode类 
# @return ListNode类
#
def reverseList(head):  
    prev = None  
    current = head  
    while current:  
        next_node = current.next  # 保存下一个节点  
        current.next = prev  # 反转当前节点的指针  
        prev = current  # 将prev移动到当前节点  
        current = next_node  # 将current移动到下一个节点  
    return prev  
class Solution:
    def addInList(self , head1: ListNode, head2: ListNode) -> ListNode:
        # write code here
        if not head1:
            return head2
        if not head2:
            return head1
        head1 = reverseList(head1)
        head2 = reverseList(head2)
        h = ListNode(0)
        head = h
        carry = 0  # 进位
        while head1 or head2 or carry:
            h1val = 0 if not head1 else head1.val
            h2val = 0 if not head2 else head2.val
            num = h1val+h2val+carry  # 节点val之和
            digit = num % 10  # 个位
            carry = num // 10  # 十位
            newnode = ListNode(digit)
            h.next = newnode
            if head1:
                head1 = head1.next
            if head2:
                head2 = head2.next
            h = h.next
        return reverseList(head.next)

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务