链表相加(二)_牛客题霸_牛客网 (nowcoder.com)
虽然过了,但是代码确实很朴素hh
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
class DListNode {
int val;
DListNode pre = null;
DListNode next = null;
DListNode(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
DListNode h1 = new DListNode(0);
DListNode h2 = new DListNode(0);
DListNode p1 = h1;
DListNode p2 = h2;
ListNode n1 = head1;
ListNode n2 = head2;
while (n1 != null) {
p1.next = new DListNode(n1.val);
p1.next.pre = p1;
p1 = p1.next;
n1 = n1.next;
}
while (n2 != null) {
p2.next = new DListNode(n2.val);
p2.next.pre = p2;
p2 = p2.next;
n2 = n2.next;
}
DListNode p3 = new DListNode(0);
int cur = 0, up = 0;
while (p1.pre != null || p2.pre != null || up != 0) {
System.out.print(p2.val);
if (p1.pre != null) {
cur += p1.val;
p1 = p1.pre;
}
if (p2.pre != null) {
cur += p2.val;
p2 = p2.pre;
}
cur += up;
up = cur / 10;
cur %= 10;
p3.next = new DListNode(cur);
p3.next.pre = p3;
p3 = p3.next;
cur = 0;
}
ListNode res = new ListNode(p3.val);
ListNode r1 = res;
while (p3.pre != null) {
if (p3.pre.pre == null) break;
p3 = p3.pre;
r1.next = new ListNode(p3.val);
r1 = r1.next;
}
return res;
}
}