LeetCode 2. 两数相加 c++ python

提交代码:

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        temp=ListNode(0)  #创建一个新链表
        l3=temp   #将temp头部赋予l3
        a=0    
        while l1!=None or l2!=None or a!=0:
            if l1!=None:   #如果l1不空,将a与指向l1数据相加,并l1向后移动
                a+=l1.val   
                l1=l1.next
            if l2!=None:   #同理
                a+=l2.val
                l2=l2.next
            temp.next=ListNode(a%10) #临时链表下一个结点即是a除以10的模
            temp=temp.next   #指针后移
            a=a//10   #a除以10,也就是a进位的数字
        return l3.next

运行测试代码:

class ListNode(object):
    def __init__(self, x):
               self.val = x
               self.next = None

class Solution:
    def addTwoNumbers(self,l1, l2):
        temp=ListNode(0)
        l3=temp
        a=0
        while l1!=None or l2!=None or a!=0:
            if l1!=None:
                a+=l1.val
                l1=l1.next
            if l2!=None:
                a+=l2.val
                l2=l2.next
            temp.next=ListNode(a%10)
            temp=temp.next
            a=a//10
        return l3.next

def printList(l):
    while(True):
        print(l.val)
        if l.next is not None:
            l = l.next
        else:
            print()
            break


if __name__ == '__main__':
    # 342 + 465 = 807
    l1_1 = ListNode(3)
    l1_2 = ListNode(4)
    l1_3 = ListNode(2)
    l1_1.next = l1_2
    l1_2.next = l1_3

    l2_1 = ListNode(4)
    l2_2 = ListNode(6)
    l2_3 = ListNode(5)
    l2_1.next = l2_2
    l2_2.next = l2_3

    l3 = Solution().addTwoNumbers(l1_1, l2_1)
    printList(l3)

 

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        if(!l1) return l2;
        if(!l2) return l1;
        int add=0,tmp;
        ListNode *l3=new ListNode(0),*p3=l3,*p1=l1,*p2=l2;
        while(p1||p2||add){
            tmp=add;
            if(p1){
                tmp+=p1->val;
                p1=p1->next;
            }
            if(p2){
                tmp+=p2->val;
                p2=p2->next;
            }
            add=tmp/10;
            tmp=tmp%10;
            p3->next=new ListNode(tmp);
            p3=p3->next;
        }
        return l3->next;
    }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值