首页 > 其他 > 详细

[leetcode]2. Add Two Numbers

时间:2019-04-25 20:16:49      阅读:118      评论:0      收藏:0      [点我收藏+]

我真是个大菜B*10

幸好leetcode的内存给的比较宽松 不然妥妥的内存超限。

 

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

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        arr1 = []
        arr2 = []
        
        # l1------------
        while (l1.next != None):
            arr1.append(l1.val)
        
            l1 = l1.next
        arr1.append(l1.val)
        # l2------------
        while (l2.next != None):
            arr2.append(l2.val)
        
            l2 = l2.next
        arr2.append(l2.val)
        
        #add 0 to fit length
        if len(arr1) >= len(arr2):
            temp = len(arr1) - len(arr2)
            for index in range(temp):
                arr2.append(0)
        else:
            temp = len(arr2) - len(arr1)
            for index in range(temp):
                arr1.append(0)

        # reverse------------
        rev_arr1 = arr1[::-1]
        rev_arr2 = arr2[::-1]
        # calculate------------
        i = len(rev_arr1) - 1

        sum = [0 for i in range(i + 1 )] #init sum and filled with 0
        carry = 0

        while (i >= 0):
            if carry == 1:
                rev_arr1[i] +=1
                carry = 0
            if (rev_arr1[i] + rev_arr2[i]) > 9:
                sum[i] = rev_arr1[i] + rev_arr2[i] - 10
                carry = 1
            else:
                sum[i] = rev_arr1[i] + rev_arr2[i]
            i = i - 1
        # output------------
        #print(sum[::-1])
        sum =sum[::-1]
        #deal with carry number such as 5+5 = 10
        if carry == 1:
            sum.append(1)
        FirstNode = ListNode(sum[0])
        indexNode = FirstNode
        
        for i in range(1,len(sum)):
            tempNode = ListNode(sum[i])
            indexNode.next = tempNode
            indexNode = tempNode
            
        return FirstNode

 

[leetcode]2. Add Two Numbers

原文:https://www.cnblogs.com/alfredsun/p/10770626.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!