25.两数相加II
方法:栈
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {Stack<Integer> stack1 = new Stack<Integer>();Stack<Integer> stack2 = new Stack<Integer>();while(l1!=null){stack1.push(l1.val);l1 = l1.next;}while(l2!=null){stack2.push(l2.val);l2 = l2.next;}int carry = 0;ListNode ans = null;while(!stack1.isEmpty() || !stack2.isEmpty() || carry != 0){int a = stack1.isEmpty() ? 0 : stack1.pop();int b = stack2.isEmpty() ? 0 : stack2.pop();int cur = a + b + carry;carry = cur / 10;cur %= 10;//头插法ListNode curNode = new ListNode(cur);curNode.next = ans;ans = curNode;}return ans;}
}