把两个链表的数字加起来从左到右对位相加,如果有进位就进到下一位。
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
分析一下这个题目,我们需要考虑以下几点:
- 两个链表长度是不是相等
[2,4,3,6]
[5,6,4] - 链表里的数字不一定是个位数,这种情况下会进很多位
[2,4,30,6]
[5,6,4]
针对第一点,如果长度不相等,多出来的就加0。
第二点,如果进位之后仍然大于10,则除以10继续进到下一位。
例如:
[2,4,300,6]
[5,6,4]
output:
[7,0,5,6,3]
下面附上代码:
# 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
"""
x =y = ListNode(0)
t = 0
while(l1 or l2 or t):
if l1:
t+=l1.val
l1 = l1.next
if l2:
t+=l2.val
l2 = l2.next
x.next = ListNode(t%10)
x= x.next
t/=10
return y.next