题目描述
给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。
进阶:
如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。
示例1:
输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)
输出: 7 -> 8 -> 0 -> 7
解题思路
因为要从最后一节点开始相加,但是链表的最后一个节点不好获得,所以自然想到先把两条翻转,然后进行相加,最后把相加后的链表再次翻转即可。
代码
1 | public ListNode addTwoNumbers(ListNode l1, ListNode l2) { |
##进阶思路
如果不能对链表中的节点进行翻转的话,则考虑用栈先进后出的特性,也可以实现从最后一位开始相加。
1 | public ListNode addTwoNumbers(ListNode l1, ListNode l2) { |