题解 | #链表相加(二)#
链表相加(二)
https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b
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
ListNode newHead = new ListNode(-1);
ListNode newTail = newHead;
ListNode pre1 = null;
ListNode pre2 = null;
ListNode cur1 = head1;
ListNode cur2 = head2;
while (cur1 != null) {
ListNode next1 = cur1.next;
cur1.next = pre1;
pre1 = cur1;
cur1 = next1;
}
while (cur2 != null) {
ListNode next2 = cur2.next;
cur2.next = pre2;
pre2 = cur2;
cur2 = next2;
}
int flag = 0;
while (pre1 != null && pre2 != null) {
int sum = pre1.val + pre2.val + flag;
flag = sum / 10;
ListNode node = new ListNode(sum % 10);
newTail.next = node;
newTail = newTail.next;
pre1 = pre1.next;
pre2 = pre2.next;
}
if (pre1 == null && pre2 == null && flag != 0) {
ListNode temp = new ListNode(flag);
newTail.next = temp;
}
while (pre1 != null) {
int sum = pre1.val + flag;
flag = sum / 10;
ListNode node = new ListNode(sum % 10);
newTail.next = node;
newTail = newTail.next;
pre1 = pre1.next;
}
while (pre2 != null) {
int sum = pre2.val + flag;
flag = sum / 10;
ListNode node = new ListNode(sum % 10);
newTail.next = node;
newTail = newTail.next;
pre2 = pre2.next;
}
if (flag != 0) {
ListNode node = new ListNode(flag);
newTail.next = node;
}
ListNode pre3 = null;
ListNode cur3 = newHead.next;
while (cur3 != null) {
ListNode next3 = cur3.next;
cur3.next = pre3;
pre3 = cur3;
cur3 = next3;
}
return pre3;
}
}
CVTE公司福利 672人发布