mysql连接测试不成功的原因有哪些
258
2022-11-08
算法创作 | 两数相加问题解决方法
问题描述
给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:2->4->3
5->6->4
7->0->8
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解决方案
首先,我们先建立节点类,再根据题意进行具体问题具体分析。因为每位数字是按照逆序的方式,所以在对应位置节点值相加后因向右进1。另外是考虑链表长度,较长链表多出的节点值就不用加另一链表的节点值(因为另一链表本生也不存在对应节点)。最后还要考虑两链表逆序相加后末端的节点值是否还要进1,若要进1,则在建立一个带元素1的节点,并将其连接在新链表的末端。
代码清单 两数相加 问题Python代码
class ListNode: def __init__(self,val): self.val = val self.next = None class Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: headNode = ListNode(0) head = headNode carryNum = 0 while l1 and l2: l1_val = l1.val l2_val = l2.val newVal = l1_val + l2_val + carryNum yushu = (l1_val + l2_val) % 10 carryNum = (l1_val + l2_val) // 10 l1.val = yushu head.next = l1 head = l1 l1 = l1.next l2 = l2.next while l1: l1_val = l1.val newVal = l1_val + carryNum yushu = l1_val % 10 carryNum = l1_val // 10 l1_val = yushu head.next = l1 head = l1 l1 = l1.next while l2: l2_val = l2.val newVal = l2_val + carryNum yushu = l2_val % 10 carryNum = l2_val // 10 l2_val = yushu head.next = l2 head = l2 l2 =l2.next if carryNum == 1: head.next = ListNode(1)
return headNode.next
|
结语
本文是关于链表逆序相加并产生一个新链表的操作,其中涉及到类的知识以及对问题的具体问题具体分析的能力。不过链表相关问题的代码表达还有很大的欠缺,需要多多理解代码的含义,然后熟练使用。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~