Add Two Numbers
Total Accepted: 153367
Total Submissions: 644131
Difficulty: Medium
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 ->
链表(逐一创建结点进行连接,并且注意两个链表的长短不同这种情况,同时注意进位在这里使用的carry变量记载进位数情况)。
Python:
#coding:utf-8
class Solution:
def addtwosum(self,link1,link2):
carry=0
root=n=ListNode(0)
while list1 or list2 or carry:
val1=val2=0
if list1:
val1=list1.val
list1=list1.next
if list2:
val2=list2.val
list2=list2.next
carry,val=divmod(val1+val2+carry,10)
n.next=ListNode(val)
n=n.next
return root.next
Java:
Java:
public class Solution{
public ListNode addTwoSum(ListNode l1,ListNode l2){
ListNode prev=new ListNode(0);
ListNode head=prev;
int carry=0;
while(l1!=null ||l2!=null||carry!=0){
ListNode cur=new ListNode(0);
int sum=((l2==null)?0:l2.val)+((l1==null?0:l1.val))+carry;
cur.val=sum%10;
carry=sum/10;
prev.next=cur;
prev=cur;
l1=(l1==null)?l1:l1.next;
l2=(l2==null)?l2:l2.next;
}
return head.next;
}
}