用java语言也能通过,但是运行时间耗费2.7s。
import 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
Deque<Integer> s1 = new ArrayDeque<>();
Deque<Integer> s2 = new ArrayDeque<>();
pushStack(head1,s1);
pushStack(head2,s2);
int c = 0;//进位
ListNode r = null; //结果列表
while (!s1.isEmpty() || !s2.isEmpty()){
int a = !s1.isEmpty() ? s1.pop() : 0;
int b = !s2.isEmpty() ? s2.pop() : 0;
int sum = a + b + c;
c = sum / 10;
ListNode node = new ListNode(0);
node.val = sum % 10;
//头插法
node.next = r;
r = node;
}
if (c != 0){
ListNode node = new ListNode(0);
node.val = c;
//头插法
node.next = r;
r = node;
}
return r;
}
private void pushStack(final ListNode l, Deque<Integer> s) {
ListNode curr = l;
while (curr != null){
s.push(curr.val);
curr = curr.next;
}
}
}