这题其实相当于2个数相加,每一位加每一位。注意有进位。写的不好,代码入下:
# 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
"""
l3 = ListNode(0)
num1 = 0
global num1
def addtwolist(c, a, b):
global num1
if a != None:
if b != None:
c.val = a.val + b.val + num1
if c.val >= 10:
c.val = c.val % 10
num1 = 1
else:
num1 = 0
if a.next != None or b.next != None:
if c.next == None:
c.next = ListNode(0)
else:
if num1 == 1:
c.next = ListNode(1)
addtwolist(c.next, a.next, b.next)
else:
c.val = a.val + num1
if c.val >= 10:
c.val = c.val % 10
num1 = 1
else:
num1 = 0
if a.next != None:
if c.next == None:
c.next = ListNode(0)
else:
if num1 == 1:
c.next = ListNode(1)
addtwolist(c.next, a.next, None)
else:
if b != None:
c.val = b.val + num1
if c.val >= 10:
c.val = c.val % 10
num1 = 1
else:
num1 = 0
if b.next != None:
if c.next == None:
c.next = ListNode(0)
else:
if num1 == 1:
c.next = ListNode(1)
addtwolist(c.next, None, b.next)
addtwolist(l3, l1, l2)
return l3