这是崔斯特的第八十九篇原创文章
2. Add Two Numbers
难度: Medium
刷题内容
原题连接:https://leetcode.com/problems/add-two-numbers/description/>
内容描述
|
|
解题方案 Python
思路 1
- 时间复杂度: O(N)
- 空间复杂度: O(N)
将两个链表转为列表,反转之后相加,再反转,最后将结果转为链表。
|
|
result:
|
|
这是最简单的解法,但是面试官往往不会满足,他肯定还会问,你还有简单的解法吗?空间复杂度可以再低一些吗?
思路2
- 时间复杂度: O(N)
- 空间复杂度: O(1)
可以使用递归,每次算一位的相加
|
|
Result:
|
|
Golang
这个问题比较简单,基本上解题思路是比较清晰的。输入是两个链表,链表的元素都是单个数字(0-9),要求将两个列表的相应节点数字相加,并作为结果链表返回。
这个题咋看可以马上开始解答,但是在此之前还是有一些需要注意的地方。第一点是,题目并没有说明链表的长度,所以 A 和 B 两个链表可能不一定相同长度,那么如果一个链表更长,那么相加怎么处理呢?这里就考虑直接返回即可,相当于+0。第二点是,如果相加溢出怎么处理,其实题目的例子里面已经很清晰了,溢出会发生进位,依次向后处理。第三点是,如果最后一位发生进位呢,这点容易被遗忘,需要新增一个节点。
|
|
测试
|
|
消耗
递归解法
|
|
有时候很无语,同样的解法,提交时间不一样,性能差别竟然有这么大,12ms与20ms。(⊙_⊙)?