LeetCode-02-AddTwoNumbers
本文最后更新于:a year ago
题目
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Example
1 |
|
题目大意
2个逆序的链表,要求从低位开始相加,得出结果也逆序输出,返回值是逆序结果链表的头节点
解题思路
这题需要注意的地方是进制问题。
考虑极端情况,例如
1 |
|
由题可知两个链表都是逆序的,相同下标相加,如果一条链的长度大于另一条的长度,那么多出来的结点只需加0即可。思路是再创建一个辅助链表,让下标相同的数相加,如果存在进位问题,用carry代替所要进位的数,将 (l1.val + l2.val + carry) % 10
存入到辅助链表,再让链表l1和l2指向下一个结点。需要注意,这里要多定义一个pre结点来防止首结点丢失。
代码
1 |
|
复杂度分析
* 时间复杂度:O(max(m,n)),其中m,n为两个链表的长度。我们呢要遍历两个链表的全部位置,而处理每个位置只需要O(1)的时间
* 空间复杂度:O(max(m,n)) ,答案链表的长度最多为较长链表的长度 +1 。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!