LeetCode Java刷题笔记—445. 两数相加 II
Posted 刘Java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Java刷题笔记—445. 两数相加 II相关的知识,希望对你有一定的参考价值。
给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。
中等难度。这道题和LeetCode Java刷题笔记—2. 两数相加是类似的题目,区别就是这道题是顺序存储的,而2. 两数相加则是逆序存储的。那么这道题的解法很简单,使用两个栈将l1和l2的值逆序存储起来,然后使用相同的方式处理,只不过在后面追加节点的时候,由于本题需要顺序输出结果,因此采用头插法插入节点。
public ListNode addTwoNumbers( ListNode l1, ListNode l2 )
//1 、用两个栈将l1和l2的结果分别逆序存储
LinkedList<Integer> stack1 = new LinkedList<>();
LinkedList<Integer> stack2 = new LinkedList<>();
while( l1 != null )
stack1.addFirst( l1.val );
l1 = l1.next;
while( l2 != null )
stack2.addFirst( l2.val );
l2 = l2.next;
ListNode dummy = new ListNode( 0 );
int flag = 0;
while( !stack1.isEmpty() || !stack2.isEmpty() || flag != 0 )
if( !stack1.isEmpty() )
flag += stack1.removeFirst();
if( !stack2.isEmpty() )
flag += stack2.removeFirst();
ListNode node = new ListNode( flag % 10 );
//采用头插法插入节点,保证返回结果是顺序方向
node.next = dummy.next;
dummy.next = node;
flag = flag / 10;
return dummy.next;
以上是关于LeetCode Java刷题笔记—445. 两数相加 II的主要内容,如果未能解决你的问题,请参考以下文章