Q2.两数相加
问题描述
给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
1 | 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) |
思路
个位 | 十位 | 百位 |
---|---|---|
2 | 4 | 3 |
5 | 6 | 4 |
7 | 0 | 8 |
根据上面的例子,这道题的时间复杂度应该是$O(n)$,即对最长链表的一遍遍历:
- 节点非空,且数字非负,那么遍历时只要考虑进位,不用回溯。
- 不要直接将字符串转化为数字,Integer和double都是有界的,这道题有数字流的意思。
代码
1 | public class AddTwoNumbers { |