2019-10-27
leetcode: 两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-two-numbers
这题是一道中等难度的题(可怜我这个彩笔前几天只敢做简单题),这题设计的一个关键就是链表
首先,链表中的两数相加应该是和加法一样各个位相加,而各个位相加的话就会有一个进位的问题,这题的关键就是处理这个进位的问题
代码如下:
1 | # Definition for singly-linked list. |
其中有一个语法
1 | x = l1.val if l1 else 0 |
意思同
1 | if l1: |
实际上这个还有一个优化的空间,就是在发现了l1 或 l2为空的时候让 r 指向非空的链,节约算法空间与时间
上面的方法确实可行,在一条链结束的时候若有进位,而后面又全都是9,那就需要一个循环,这样可以提高一定的效率,下次二刷的时候再实现吧
LPL联手出现保送决赛= =,但是skt是最强的: - )