题目
有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。
给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。
我的题解
import java.util.*;
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Plus {
public ListNode plusAB(ListNode a, ListNode b) {
// write code here
int offset = 1;
int up = 0;
ListNode res = null;
ListNode cur = null;
while((a != null) && (b != null)) {
int sum = up;
up = 0;
sum += a.val + b.val;
if(sum >= 10) {
up = 1;
}
sum = sum % 10;
if(res == null) {
res = new ListNode(sum);
cur = res;
}else {
cur.next = new ListNode(sum);
cur = cur.next;
}
a = a.next;
b = b.next;
}
ListNode now = a != null?a:b;
while(now != null) {
int sum = up;
sum += now.val;
if(sum >= 10) {
up = 1;
}else up = 0;
sum = sum % 10;
cur.next = new ListNode(sum);
cur = cur.next;
now = now.next;
}
if(up != 0)
cur.next = new ListNode(up);
return res;
}
}