题解 | #链表相加(二)#
链表相加(二)
https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head1 ListNode类
* @param head2 ListNode类
* @return ListNode类
*/
public ListNode addInList (ListNode head1, ListNode head2) {
// write code here
if (head1 == null) return head2;
if (head2 == null) return head1;
Stack<ListNode> st1 = new Stack<> ();
ListNode tmp1 = head1;
while (tmp1 != null) {
st1.push(tmp1);
tmp1 = tmp1.next;
}
Stack<ListNode> st2 = new Stack<> ();
ListNode tmp2 = head2;
while (tmp2 != null) {
st2.push(tmp2);
tmp2 = tmp2.next;
}
ListNode res = new ListNode(0);
int n, m, s = 0, b = 0;
while (!st1.isEmpty() || !st2.isEmpty()) {
n = st1.isEmpty() ? 0 : st1.pop().val;
m = st2.isEmpty() ? 0 : st2.pop().val;
s = n + m + b;
b = s >= 10 ? 1 : 0;
ListNode newNode = new ListNode(s % 10);
newNode.next = res.next;
res.next = newNode;
}
if (b > 0) {
ListNode newNode = new ListNode(b);
newNode.next = res.next;
res.next = newNode;
}
return res.next;
}
}
查看2道真题和解析