LeetCode Java刷题笔记—445. 两数相加 II

Posted 刘Java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Java刷题笔记—445. 两数相加 II相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Java刷题笔记—1. 两数之和

LeetCode Java刷题笔记—2. 两数相加

LeetCode - 445 - 两数相加|| - java - 细喔

LeetCode刷题笔记-数据结构-day10

LeetCode刷题笔记-数据结构-day10

刷题14:两数相加 II