LeetCode-2-Add-Two-Numbers 链表

来源:互联网 发布:qq浏览器mac版官网 编辑:程序博客网 时间:2024/06/14 16:31

题意是给俩非空链表,每个结点是0-9的数字,输出这俩链表的每一位加起来组成的一个新链表,要考虑进位的问题,链表左边是最低位,而且链表长度可以不一样。

例如:

3-4-5加4-6-2得7-0-8

5加5得0-1

0-8加0-2-1得0-0-2


C++:

/** * 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) {        ListNode *ans=new ListNode(0);        ListNode *p=ans;        int add=0;        ListNode *cur1=l1;        ListNode *cur2=l2;        while(cur1!=NULL||cur2!=NULL||add>0){            int v1=0,v2=0,v3=0;            if(cur1!=NULL)v1=cur1->val;            if(cur2!=NULL)v2=cur2->val;            v3=(v1+v2+add)%10;            add=(v1+v2+add)/10;            p->next=new ListNode(v3);            if(cur1!=NULL)cur1=cur1->next;            if(cur2!=NULL)cur2=cur2->next;            p=p->next;        }        return ans->next;    }};

java:

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {        ListNode ans=new ListNode(0);        ListNode p=ans;        int add=0;        ListNode cur1=l1;        ListNode cur2=l2;        while(cur1!=null||cur2!=null||add>0){            int v1=0,v2=0,v3=0;            if(cur1!=null)v1=cur1.val;              if(cur2!=null)v2=cur2.val;              v3=(v1+v2+add)%10;              add=(v1+v2+add)/10;              p.next=new ListNode(v3);              if(cur1!=null)cur1=cur1.next;              if(cur2!=null)cur2=cur2.next;              p=p.next;          }        return ans.next;    }}

Python:

# Definition for singly-linked list.# class ListNode(object):#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution(object):        def addTwoNumbers(self, l1, l2):            """            :type l1: ListNode            :type l2: ListNode            :rtype: ListNode            """            ans=ListNode(0)            p=ans            add=0            cur1=l1            cur2=l2            while cur1!=None or cur2!=None or add>0:                v1=0                v2=0                v3=0                if cur1!=None:                    v1=cur1.val                if cur2!=None:                    v2=cur2.val                v3=(v1+v2+add)%10                add=(v1+v2+add)/10                p.next=ListNode(v3)                if cur1!=None:                    cur1=cur1.next                if cur2!=None:                    cur2=cur2.next                p=p.next            return ans.next


原创粉丝点击