• [leetcode]2. Add Two Numbers


    我真是个大菜B*10

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

    Submission Detail

    1563 / 1563 test cases passed.
    Status: 

    Accepted

    Runtime: 88 ms
    Memory Usage: 13.3 MB
    Submitted: 4 minutes ago
    # 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
  • 相关阅读:
    Java基础50道经典练习题(23)——求岁数
    Java基础50道经典练习题(22)——递归求阶乘
    团队第一阶段冲刺04
    团队第一阶段冲刺03
    团队第一阶段冲刺02
    团队第一阶段冲刺01
    软件工作进度01
    软团队项目01之电梯演讲视频
    团队项目1
    C语言动静态链接库使用(笔记)
  • 原文地址:https://www.cnblogs.com/alfredsun/p/10770626.html
Copyright © 2020-2023  润新知