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

[Leetcode] 445. Add Two Numbers II

时间:2017-04-26 19:14:33      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:new   etc   tno   lan   ini   logs   null   ack   java实现   

问题: 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

标签:new   etc   tno   lan   ini   logs   null   ack   java实现   

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

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