在Python中加两个数字
假设我们给出了两个非空链表。这两个列表代表两个非负整数。这些数字以相反的顺序存储。它们的每个节点仅包含一位。将两个数字相加,然后将结果作为链表返回。我们假设两个数字不包含任何前导零,除了数字0本身。因此,如果数字为120 + 230,则链接列表将为[0→2→1] + [0→3→2] = [0→5→3] = 350。
为了解决这个问题,我们将按照以下步骤
取两个列表l1和l2。将head和temp初始化为null
c:= 0
而l1和l2都是非空列表
head.next:=节点和head:=节点
head:=节点和temp:=节点
如果l1为非空,则设置:= 0,否则设置:= l1.val
如果l2为非空,则设置b:= 0,否则设置b:= l2.val
n:= a + b + c
如果n> 9,则c:= 1否则为0
node:=创建一个值为n mod 10的新节点
如果head为null
除此以外
l1:= l1的下一个节点(如果l1存在)
l2:= l2的下一个节点(如果l2存在)
如果c不为零,则
node:=新节点,值为1,位于head:= node的下一个
返回温度
示例(Python)
让我们看下面的实现以获得更好的理解
class ListNode:def __init__(self, data, next = None):
self.val = data
self.next = next
def make_list(elements):
head = ListNode(elements[0])
for element in elements[1:]:
ptr = head
while ptr.next:
ptr = ptr.next
ptr.next = ListNode(element)
return head
def print_list(head):
ptr = head
print('[', end = "")
while ptr:
print(ptr.val, end = ", ")
ptr = ptr.next
print(']')
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
head = None
temp = None
c = 0
while l1 or l2:
if not l1:
a= 0
else:
a = l1.val
if not l2:
b=0
else:
b = l2.val
n = a +b + c
c = 1 if n>9 else 0
node = ListNode(n%10)
if not head:
head = node
temp = node
else:
head.next = node
head = node
l1 = l1.next if l1 else None
l2 = l2.next if l2 else None
if c:
node = ListNode(1)
head.next = node
return temp
ob1 = Solution()l1 = make_list([0,2,1])
l2 = make_list([0,3,2])
print_list(ob1.addTwoNumbers(l1, l2))
输入值
[0,2,1][0,3,2]
输出结果
[0,5,3]
以上是 在Python中加两个数字 的全部内容, 来源链接: utcz.com/z/316568.html