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

链表相加(二)

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类
#
class Solution:
    def addInList(self , head1: ListNode, head2: ListNode) -> ListNode:
        # write code here
        # 思路:反转链表,再逐个相加
        # 反转链表思路:将后续链表逐个反转
        if head1 is None:
            return head2
        if head2 is None:
            return head1
        head1 = self.reverse(head1)
        head2 = self.reverse(head2)
        head = ListNode(-1)
        cur = head
        temp = 0
        while head1 or head2:
            val = temp
            if head1:
                val = val + head1.val
                head1 = head1.next
            if head2:
                val = val+head2.val
                head2 = head2.next
            temp = (int)(val / 10)
            cur.next = ListNode(val % 10)
            cur = cur.next
        if temp > 0:
            cur.next = ListNode(temp)
        return self.reverse(head.next)




    def reverse(self, head: ListNode) -> ListNode:
        if head is None:
            return head
        new_head = None
        while head:
            # 存储当前节点的下一个节点备用
            temp = head.next
            # 将当前节点的下一个节点指向新链表,或者说是指向前一个节点
            head.next = new_head
            # 将当前节点赋给新链表
            new_head = head
            # 将下一个节点赋给原来的链表,继续往下走
            head = temp
        return new_head
        

注意点:进位数需转换为int类型

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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