首页 > 其他 > 详细

[Leetcode] 445. Add Two Numbers II

时间:2017-04-26 18:31:39      阅读:175      评论:0      收藏:0      [点我收藏+]

问题: https://leetcode.com/problems/add-two-numbers-ii/#/description

思路:该题与“415. Add Strings”类似,都需要先将原来的数字序列翻转,然后就转化成了跟“2. Add Two Numbers”类似的问题,进而就容易解决多了。

但是本题又规定不允许对原来的链表进行翻转,所以可以采用其他的方式曲线救国。这里可以利用栈的后进先出的特性,来变相实现输入链表的翻转。

Java实现代码如下:

 1 /**
 2  * Definition for singly-linked list.
 3  * public class ListNode {
 4  *     int val;
 5  *     ListNode next;
 6  *     ListNode(int x) { val = x; }
 7  * }
 8  */
 9 public class Solution {
10     public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
11         // 使用推荐的Deque来代替旧的Stack
12         Deque<Integer> stack1 = new LinkedList<>();
13         Deque<Integer> stack2 = new LinkedList<>();
14         
15         // 使用栈对两个输入链表进行翻转
16         for(ListNode p = l1; p != null; p = p.next) {
17             stack1.addFirst(p.val);
18         }
19         for(ListNode p = l2; p != null; p = p.next) {
20             stack2.addFirst(p.val);
21         }
22         
23         int carry = 0;  // 进位
24         ListNode result = null;
25         while(stack1.size() > 0 || stack2.size() > 0) {
26             int sum = 0;
27             // 如果第一个链表里的对应位上还有数
28             if(stack1.size() > 0) {
29                 sum += stack1.removeFirst();
30             }
31             // 如果第二个链表里的对应位上还有数
32             if(stack2.size() > 0) {
33                 sum += stack2.removeFirst();
34             }
35             sum += carry;
36             ListNode node = new ListNode(sum % 10);
37             node.next = result;
38             result = node;
39             carry = sum / 10;
40         }
41         // 如果最高位相加后还有进位
42         if(carry > 0) {
43             ListNode node = new ListNode(carry);
44             node.next = result;
45             result = node;
46         }
47         
48         return result;
49     }
50 }

 

[Leetcode] 445. Add Two Numbers II

原文:http://www.cnblogs.com/seagoo/p/6770008.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!