题目链接
英文链接:https://leetcode.com/problems/add-two-numbers-ii/
中文链接:https://leetcode-cn.com/problems/add-two-numbers-ii/
题目详述
给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。
进阶:
如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。
示例:
1 | 输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4) |
题目详解
- LeetCode2-两数相加中的链表是逆序存储的,而本题的链表是正序存储的。
- 由于输入链表不能修改,不能翻转,为了模拟从低位到高位相加,可以运用栈来存储两个链表中的值。然后依次弹出栈顶实现从低位到高位相加。
- 一般来说,链表是采用尾插法构建的。本题采用尾插法最后还需要翻转一次链表,可以采用头插法构建链表,这样就不用翻转链表了。
1 | public class LeetCode_00445 { |