题解 | 链表相加(二)
链表相加(二)
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; } }