码迷,mamicode.com
首页 > 其他好文 > 详细

445. 两数相加 II

时间:2019-05-29 23:30:54      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:一个   lis   输入   ext   color   node   temp   turn   位置   

给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。

输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)
输出: 7 -> 8 -> 0 -> 7
 1 import java.util.Stack;
 2 
 3 public class AddTwoNumbersII {
 4     public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
 5         Stack<ListNode> st1 = new Stack<>();
 6         Stack<ListNode> st2 = new Stack<>();
 7         ListNode temp1 = l1;
 8         ListNode temp2 = l2;
 9         while(temp1 != null) {
10             st1.push(temp1);
11             temp1 = temp1.next;
12         }
13         while(temp2 != null) {
14             st2.push(temp2);
15             temp2 = temp2.next;
16         }
17         int flag = 0;
18         ListNode res = new ListNode(-1);
19         ListNode result = res.next;
20         while(!st1.empty() && !st2.empty()) {
21             int sum = st1.pop().val + st2.pop().val + flag;
22             flag = 0;
23             if(sum > 9) {
24                 sum = sum % 10;
25                 flag = 1;
26             }
27             ListNode newHead = new ListNode(sum);
28             newHead.next = result;
29             result = newHead;
30         }
31         while(!st1.empty()) {
32             int sum = st1.pop().val + flag;
33             flag = 0;
34             if(sum > 9) {
35                 sum = sum % 10;
36                 flag = 1;
37             }
38             ListNode newHead = new ListNode(sum);
39             newHead.next = result;
40             result = newHead;
41         }
42         while(!st2.empty()) {
43             int sum = st2.pop().val + flag;
44             flag = 0;
45             if(sum > 9) {
46                 sum = sum % 10;
47                 flag = 1;
48             }
49             ListNode newHead = new ListNode(sum);
50             newHead.next = result;
51             result = newHead;
52         }
53         if(flag == 1) {
54             ListNode newHead = new ListNode(1);
55             newHead.next = result;
56             result = newHead;
57         }
58         return result;
59     }
60     
61     class ListNode {
62         int val;   
63         ListNode next;
64         ListNode(int x) { val = x; }
65     }
66 }

 

445. 两数相加 II

标签:一个   lis   输入   ext   color   node   temp   turn   位置   

原文地址:https://www.cnblogs.com/xiyangchen/p/10946903.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!