题目:假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。
给定两个这种链表,请生成代表两个整数相加值的结果链表。
思路:首先是逆序相加;故这里用到了两个栈,分别存放两个链表中的值。两数相加会涉及到进位问题,所以考虑了进位变量。每次计算完毕都创建一个新的结点,然后连接,最后得到新的链表。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head1 ListNode类 * @param head2 ListNode类 * @return ListNode类 */ public ListNode addInList (ListNode head1, ListNode head2) { // write code here Stack<Integer> stack1 = new Stack(); Stack<Integer> stack2 = new Stack(); while(head1 != null){ stack1.push(head1.val); head1 = head1.next; } while(head2 != null){ stack2.push(head2.val); head2 = head2.next; } int n = 0; int n1 = 0; int n2 = 0; int ca = 0; ListNode pre = null; ListNode node = null; while(!stack1.isEmpty() || !stack2.isEmpty()){ n1 = stack1.isEmpty()?0:stack1.pop(); n2 = stack2.isEmpty()?0:stack2.pop(); n = n1 + n2 +ca; pre = node; node = new ListNode(n%10); node.next = pre; ca = n/10; } if(ca == 1){ pre = node; node = new ListNode(1); node.next = pre; } return node; } }
最后
以上就是缓慢绿草最近收集整理的关于10.两个链表相加求和的全部内容,更多相关10内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复