题解 | 链表相加(二)
链表相加(二)
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) {
// write code here
if(head1 == null) return head2;
if(head2 == null) return head1;
head1 = reverse(head1);
head2 = reverse(head2);
ListNode head = new ListNode(-1);
ListNode nHead = head;
int temp = 0;
while(head1 != null ||head2 != null){
int val = temp;
if(head1 !=null){
val+=head1.val;
head1 = head1.next;
}
if(head2 != null){
val +=head2.val;
head2 = head2.next;
}
temp = val/10;
nHead.next = new ListNode(val%10);
nHead = nHead.next;
}
if(temp>0){
nHead.next = new ListNode(temp);
}
return reverse(head.next);
}
ListNode reverse(ListNode head){
if(head == null) return head;
ListNode cur = head;
ListNode node = null;
while(cur != null){
ListNode tail = cur.next;
cur.next = node;
node = cur;
cur = tail;
}
return node;
}
}
思路不是很难就是代码有点难写 只需要弄个反转链表函数加上一个简单的进位处理 创建新链表就行了

