码迷,mamicode.com
首页 > 其他好文 > 详细

Add Two Number

时间:2015-06-28 14:06:03      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

题目: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 -> 8

两个链表代表的两个数字相加,逆向表示。

 1 # Definition for singly-linked list.
 2 # class ListNode:
 3 #     def __init__(self, x):
 4 #         self.val = x
 5 #         self.next = None
 6 
 7 class Solution:
 8     # @param {ListNode} l1
 9     # @param {ListNode} l2
10     # @return {ListNode}
11     def addTwoNumbers(self, l1, l2):
12         if l1==None:return l2                     #在最开始的时候,其中有任意的值为空,即个位数都为空,相加直接返回另一个数
13         if l2==None:return l1
14         dummy=ListNode(0)
15         p=dummy
16         flag=0                                    #对进位的计数
17         while l1 and l2:
18             p.next=ListNode((l1.val+l2.val+flag)%10)
19             flag=(l1.val+l2.val+flag)/10
20             l1=l1.next;l2=l2.next;p=p.next
21         if l1:                                    #当前面的while l1和l2每一位都不为空结束时,若l1较长还有高数位的数,l2已为空时
22             while l1:
23                 p.next=ListNode((l1.val+flag)%10)
24                 flag=(l1.val+flag)/10
25                 l1=l1.next;p=p.next
26         if l2:                                    #l2比l1位数更多时
27             while l2:
28                 p.next=ListNode((l2.val+flag)%10)
29                 flag=(l2.val+flag)/10
30                 l2=l2.next;p=p.next
31         if flag==1:                               #最终还有一个进位时
32             p.next=ListNode(1)
33         return dummy.next

 

Add Two Number

标签:

原文地址:http://www.cnblogs.com/lzsjy421/p/4605461.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!