445. Add Two Numbers II

来源:互联网 发布:获取所有股票信息 js 编辑:程序博客网 时间:2024/04/29 22:35

You are given two non-empty linked lists representing two non-negative integers. The most significant digit comes first and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

You may assume the two numbers do not contain any leading zero, except the number 0 itself.

Follow up:
What if you cannot modify the input lists? In other words, reversing the lists is not allowed.

Example:

Input: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)Output: 7 -> 8 -> 0 -> 7

Subscribe to see which companies asked this question.

Show Tags
Show Similar Problems
/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {        Stack<Integer> s1 = new Stack<>();Stack<Integer> s2 = new Stack<>();fillStack(s1, l1);fillStack(s2, l2);int add = 0;ListNode next = null;while (!s1.isEmpty() || !s2.isEmpty()) {int n1 = 0;int n2 = 0;if (!s1.isEmpty())n1 = s1.pop();if (!s2.isEmpty())n2 = s2.pop();int sum = n1 + n2 + add;if (sum > 9) {sum -= 10;add = 1;} elseadd = 0;ListNode temp = new ListNode(sum);temp.next = next;next = temp;}if (add == 0)return next;else {ListNode re = new ListNode(add);re.next = next;return re;}    }    private void fillStack(Stack<Integer> s, ListNode head) {while (head != null) {s.push(head.val);head = head.next;}return;}}

0 0
原创粉丝点击