算法创作 | 两数相加问题解决方法

问题描述给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:2->4->35->6->47->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 = valself.next = Noneclass Solution:def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:headNode = ListNode(0)head = headNodecarryNum = 0while l1 and l2:l1_val = l1.vall2_val = l2.valnewVal = l1_val + l2_val + carryNumyushu = (l1_val + l2_val) % 10carryNum = (l1_val + l2_val) // 10l1.val = yushuhead.next = l1head = l1l1 = l1.nextl2 = l2.nextwhile l1:l1_val = l1.valnewVal = l1_val + carryNumyushu = l1_val % 10carryNum = l1_val // 10l1_val = yushuhead.next = l1head = l1l1 = l1.nextwhile l2:l2_val = l2.valnewVal = l2_val + carryNumyushu = l2_val % 10carryNum = l2_val // 10l2_val = yushuhead.next = l2head = l2l2 =l2.nextif carryNum == 1:head.next = ListNode(1)return headNode.next结语本文是关于链表逆序相加并产生一个新链表的操作,其中涉及到类的知识以及对问题的具体问题具体分析的能力。不过链表相关问题的代码表达还有很大的欠缺,需要多多理解代码的含义,然后熟练使用。实习编辑:李欣容作者:裴晓松、张雨平、刘湘

(0)

相关推荐

  • ​LeetCode刷题实战25:K 个一组翻转链表

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • 算法创作|两数之和返回数组下标问题解决方法

    问题描述给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值的那两个整数,并返回它们的数组下标.示例:输入:nums = [3,5,7,9],target = 14输出: ...

  • 算法创作 | 单链表插入问题解决方法

    问题描述 如何利用尾插法实现单链表中元素的插入? 如: 如何利用前插法实现单链表中元素的插入? 如: 解决方案 利用尾插法进行元素的插入:将需要插入的结点的前一个结点的next地址改成需要插入的结点 ...

  • 算法创作|单链表基本操作问题解决方法

    问题描述单链表:用文字描述要解决的问题是什么.用P表示head,也即是头指针,设计算法让P指向任何一个元素.示例:让P指向第n个元素.解决方案p=headfork in range(n):p=p.ne ...

  • 算法创作|核桃的数量问题解决方法

    问题描述小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班.为鼓舞士气,小张打算给每个组发一袋核桃(据传言核桃能补脑),他的要求是:各组的核桃数量必须相同各组内能平分核桃(不能打碎)尽量提供满 ...

  • 算法创作|交替合并字符串问题解决方法

    问题描述给你两个字符串word1和word2.请你给你两个字符串word1和word2.请你从word1开始,通过交替添加字母来合并字符串.如果一个字符 串比另一个字符串长,就将多出来的字母追加到合并 ...

  • 算法创作 | 输出逆序数问题解决方法

    问题描述示例:程序每次读入一个正三位数,输出按位逆序的数字.(请注意:当输入的数字含有结尾的0时,输出不应该带有前导的0.)输入:700输出:7或者输入:123输出:321解决方案读入三位正整数,要求 ...

  • 算法创作|规则数列计算解决方法

    问题描述如下图所示,小明用从 1 开始的正整数"蛇形"填充无限大的矩阵.1 2 6 7 15 -3 5 8 14 -4 9 13 -10 12 -11 --(1)容易看出矩阵第二行 ...

  • 精妙话语:人生账簿,两数相减便是盈利;两数相加就是成就

    精妙话语:人生账簿,两数相减便是盈利:两数相加就是成就 图文/网络   整理/大连人的图书馆 我们最大的悲哀,是迷茫地走在路上,看不到前面的希望:我们最坏的习惯,是苟安于当下生活,不知道明天的方向. ...

  • 奇门十三金锁飞遁术,只需两数相加即可,可占财运怎样、方位如何!

    声明:本公众号部分内容转自网络, 版权归原作者所有.文章所载内容仅供参考,若想深入了解和实践,请咨询相关专业人士. 此术所用的方法还是取用你用事的日辰+时支. 年之善没有月之善. 月之善者没有日之善也 ...