题目描述:
有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。
给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。
测试样例:
{1,2,3},{3,2,1}
返回:{4,4,4}
import java.util.*;
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Plus {
public static ListNode plusAB(ListNode a, ListNode b) {
// write code here
ListNode resultHead = new ListNode(-1);
ListNode resultCurrent = resultHead;
//进位
int addToNextDigit = 0;
while (a != null || b != null || addToNextDigit != 0) {
int aVal = a != null ? a.val : 0;
int bVal = b != null ? b.val : 0;
int sum = aVal + bVal + addToNextDigit;
int nodeDigit = sum % 10;
addToNextDigit = sum / 10;
resultCurrent.next = new ListNode(nodeDigit);
resultCurrent = resultCurrent.next;
a = a != null ? a.next : null;
b = b != null ? b.next : null;
}
return resultHead.next;
}
}