您的位置:首页 > 其它

LeetCode-2-Add-Two-Numbers 链表

2017-08-08 20:39 501 查看
题意是给俩非空链表,每个结点是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 = None

class 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: