leetcode练习

leetcode


leetcode第二题

两个链表中的数字相加: 每个链表中的数字字符表示倒叙的数字,将其相加即可。
解法:
以第一个链表为基准,将数字加到第一个链表上,若第二个链表比第一个长,则将第一个链接接上第二个链表的多出来的部分
leetcode练习_第1张图片

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        h1=l1 
       
        p1=l1
        p2=l2
        mark=0
        T=1
        while p1.next!=None or p2.next!=None:
            if p1.next!=None and  p2.next!=None :
                temp=p1.val
                p1.val=(temp+p2.val+mark)%10
                mark=(temp+p2.val+mark) //10    
     
                p1=p1.next
                p2=p2.next
               
                
            elif p1.next==None and p2.next!=None:               
                temp=p1.val
                p1.val=(temp+p2.val+mark)%10
                mark=(temp+p2.val+mark) //10
                p1=p2.next
                p2.next=None 
                print([p1.val])
             
            else:
                
                if T:
                    T=0
                    p2_temp=p2.val
                    
                else:
                    p2_temp=0
                
                temp=p1.val
                p1.val=(temp+mark+p2_temp)%10
                mark=(temp+mark+p2_temp) //10
                p1=p1.next
        if T:
            temp=p1.val
            p1.val=(temp+mark+p2.val)%10
            mark=(temp+mark+p2.val) //10
        else:
            temp=p1.val
            p1.val=(temp+mark)%10
            mark=(temp+mark) //10
        if mark:
            p1.next=ListNode(1)            
        return h1

你可能感兴趣的:(leetcode)