题解 | 链表相加(二)
链表相加(二)
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) {
int carry = 0, cur = 0;
ListNode newHead = null;
head1 = reverse(head1);
head2 = reverse(head2);
while (head1 != null || head2 != null) {
int temp;
if (head1 == null) {
temp = head2.val + carry;
head2 = head2.next;
} else if (head2 == null) {
temp = head1.val + carry;
head1 = head1.next;
} else {
temp = head1.val + head2.val + carry;
head1 = head1.next;
head2 = head2.next;
}
carry = temp / 10;
cur = temp % 10;
if (newHead == null) {
newHead = new ListNode(cur);
} else {
ListNode newNode = new ListNode(cur) ;
newNode.next = newHead;
newHead = newNode;
}
}
if (carry != 0) { // 最后的进位直接加入即可
ListNode newNode = new ListNode(carry) ;
newNode.next = newHead;
newHead = newNode;
}
return newHead;
}
public ListNode reverse(ListNode head) {
ListNode prev = null;
while (head != null) {
ListNode next = head.next;
head.next = prev;
prev = head;
head = next;
}
return prev;
}
}
