zoukankan      html  css  js  c++  java
  • leetcode-mid-Linked list-2 Add Two Numbers

    mycode 87.22%

    # Definition for singly-linked list.
    # class ListNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution(object):
        def addTwoNumbers(self, l1, l2):
            """
            :type l1: ListNode
            :type l2: ListNode
            :rtype: ListNode
            """
            dummy = link = ListNode(-1)
            add = 0
            while l1 and l2:
                temp = l1.val + l2.val + add
                if temp >= 10:
                    link.next = ListNode(temp%10)
                    add = temp // 10
                else:
                    add = 0
                    link.next = ListNode(temp)
                print(temp)
                l1 = l1.next
                l2 = l2.next
                link = link.next
            l1 = l1 or l2
            while l1:
                temp = l1.val + add
                if temp >= 10:
                    link.next = ListNode(temp%10)
                    add = temp // 10
                else:
                    add = 0
                    link.next = ListNode(temp)
                print(temp)
                l1 = l1.next
                link = link.next
            if add:
                link.next = ListNode(add)
                link = link.next
            link.next = None
            return dummy.next
                
            

    参考:

    1、如何把其中一个为None放到while里面去?

    class Solution(object):
        def addTwoNumbers(self, l1, l2):
            """
            :type l1: ListNode
            :type l2: ListNode
            :rtype: ListNode
            """
            dummy = link = ListNode(-1)
            add = 0
            while l1 or l2:
                res = 0
                if not l2: l2 = ListNode(0)
                if not l1:
                    l1 = ListNode(0)
                temp = l1.val + l2.val + add
                print('temp...',temp+add)
                if temp > 9:
                    res = temp % 10 
                    add = temp // 10  
                    #print('if...',res,add)
                else:
                    res = temp
                    add = 0
                    #print('else...',res,add)
                l1 = l1.next
                l2 = l2.next
                dummy.next = ListNode(res)
                dummy = dummy.next
            if add > 0:
                print('addd...')
                dummy.next = ListNode(add)
                dummy = dummy.next
                dummy.next = None
            return link.next

    2、如何把进位也放进去?

    class Solution(object):
        def addTwoNumbers(self, l1, l2):
            dummy = cur = ListNode(0)
            curry = 0
            while l1 or l2 or curry:
                if l1:
                    curry = curry+l1.val
                    l1 = l1.next
                if l2:
                    curry = curry+l2.val
                    l2 = l2.next
                cur.next = ListNode(curry%10)
                cur = cur.next
                curry = curry//10       
            return dummy.next

    5Longest Palindromic Substring

  • 相关阅读:
    面试题:能谈谈Date、Datetime、Time、Timestamp、year的区别吗?
    面试题:对NotNull字段插入Null值 有啥现象?
    聊聊什么是慢查、如何监控?如何排查?
    谈谈MySQL的基数统计
    .vimrc
    HISKrrr的板子库
    CSP 模拟35
    晚测1
    CSP 模拟34
    nim板子题异或正确性YY
  • 原文地址:https://www.cnblogs.com/rosyYY/p/10964440.html
Copyright © 2011-2022 走看看