【Leetcode/Python】002-Add Two Numbers

题目

给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。

示例

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

感觉这题有点难,第一感觉是采取暴力相加的方式。

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

class Solution:
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        # 先把两个list取出来
        list1 = []
        list2 = []
        while l1:
            list1 .append(l1.val)
            l1 = l1.next
        # print(list1)
        while l2:
            list2.append(l2.val)
            l2 = l2.next
        # print(list2)

        #把取出来的list变成数字
        num1 = 0
        num2 = 0
        for i in range(len(list1)):
            num1 += list1[i] * (10**i)
        for j in range(len(list2)):
            num2 += list2[j] * (10**j)
        
        #把两个数字相加,倒序变成string格式,再存储成所需格式
        sum = str(num1 + num2)[::-1]
        result = head = ListNode(0)
        for i in range(0, len(sum)): 
            head.next = ListNode(sum[i])
            head = head.next
                    
        return result.next
···
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容