给定两个非空链表来表明两个非负整数。数字最高位位于链表开始位置。它们的每一个节点只存储单个数字。将这两数相加会返回一个新的链表。java
你能够假设除了数字 0 以外,这两个数字都不会以零开头。ide
进阶:spa
若是输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。code
示例:rem
输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)
输出: 7 -> 8 -> 0 -> 7it
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { //栈 LinkedList<Integer> s1 = new LinkedList<>(); LinkedList<Integer> s2 = new LinkedList<>(); while(l1 != null) { s1.addFirst(l1.val); l1 = l1.next; } while(l2 != null) { s2.addFirst(l2.val); l2 = l2.next; } int carry = 0; ListNode lastNode = null; while(!s1.isEmpty() || !s2.isEmpty()) { int a1 = 0, a2 = 0; if(!s1.isEmpty()) { a1 = s1.removeFirst(); } if(!s2.isEmpty()) { a2 = s2.removeFirst(); } ListNode curNode = new ListNode((a1 + a2 + carry) % 10); carry = (a1 + a2 + carry) / 10; curNode.next = lastNode; lastNode = curNode; } if(carry > 0) { ListNode curNode = new ListNode(carry); curNode.next = lastNode; lastNode = curNode; } return lastNode; } }
给定两个非空链表来表明两个非负整数。数字最高位位于链表开始位置。它们的每一个节点只存储单个数字。将这两数相加会返回一个新的链表。io
你能够假设除了数字 0 以外,这两个数字都不会以零开头。ast
进阶:class
若是输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。List
示例:
输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)
输出: 7 -> 8 -> 0 -> 7
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { //栈 LinkedList<Integer> s1 = new LinkedList<>(); LinkedList<Integer> s2 = new LinkedList<>(); while(l1 != null) { s1.addFirst(l1.val); l1 = l1.next; } while(l2 != null) { s2.addFirst(l2.val); l2 = l2.next; } int carry = 0; ListNode lastNode = null; while(!s1.isEmpty() || !s2.isEmpty()) { int a1 = 0, a2 = 0; if(!s1.isEmpty()) { a1 = s1.removeFirst(); } if(!s2.isEmpty()) { a2 = s2.removeFirst(); } ListNode curNode = new ListNode((a1 + a2 + carry) % 10); carry = (a1 + a2 + carry) / 10; curNode.next = lastNode; lastNode = curNode; } if(carry > 0) { ListNode curNode = new ListNode(carry); curNode.next = lastNode; lastNode = curNode; } return lastNode; } }