这题其实相当于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
本文介绍了一种解决两数相加问题的方法,通过链表来存储数值,并逐位进行加法运算,同时考虑了进位的情况。该算法适用于需要进行大数运算的场景。
1万+

被折叠的 条评论
为什么被折叠?



