lintcode练习-221. 链表求和 II

221. 链表求和 II

假定用一个链表表示两个数,其中每个节点仅包含一个数字。假设这两个数的数字顺序排列,请设计一种方法将两个数相加,并将其结果表现为链表的形式。

样例

给出 6->1->7 + 2->9->5。即,617 + 295

返回 9->1->2。即,912 。

实现思路:

求出两个链表所代表的数字的和,然后将和转换成链表

"""
Definition of ListNode
class ListNode(object):
    def __init__(self, val, next=None):
        self.val = val
        self.next = next
"""

class Solution:
    """
    @param l1: The first list.
    @param l2: The second list.
    @return: the sum list of l1 and l2.
    """
    def addLists2(self, l1, l2):
        # write your code here
        #首先求出两个链表的大小
        l1_sum, l2_sum = 0, 0
        l1_cur, l2_cur = l1, l2
        while l1_cur:
            l1_sum = l1_sum * 10 + l1_cur.val
            l1_cur = l1_cur.next
        
        while l2_cur:
            l2_sum = l2_sum * 10 + l2_cur.val
            l2_cur = l2_cur.next
        
        res = l1_sum + l2_sum
        if res == 0:
            return ListNode(0)
        
        #将和转换成链表
        dummy = ListNode(0)
        pre = dummy
        
        while res > 0:
            tmp = ListNode(res % 10)
            
            tmp.next = pre.next
            pre.next = tmp
            
            res = res // 10
        
        return dummy.next
        
        
        

猜你喜欢

转载自blog.csdn.net/qq_36387683/article/details/81711131