• [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
  • 相关阅读:
    radio按钮组和label标签
    div布局
    bootstrap模态框使用
    bootstrap按钮组下拉菜单使用
    Bootstrap下拉菜单和导航栏的使用
    Bootstrap源码解读下拉菜单
    python中django学习2
    windows下配置桌面github
    状态模式--无尽加班何时休
    直接在安装了redis的Linux机器上操作redis数据存储类型--set类型
  • 原文地址:https://www.cnblogs.com/alfredsun/p/10770626.html
Copyright © 2020-2023  润新知