答案,直接粘贴上去就行
public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode listNode = new ListNode();
ListNode n1 = l1;
ListNode n2 = l2;
int isFlag = 0;
if (l1.val + l2.val < 10){
listNode.val = l1.val + l2.val;
}
else {
listNode.val = (l1.val + l2.val) % 10;
isFlag = 1;
}
ListNode l = listNode;
while (n1.next != null && n2.next != null){
n1 = n1.next;
n2 = n2.next;
if (n1.val + n2.val + isFlag < 10){
listNode.next = new ListNode(n1.val + n2.val + isFlag) ;
isFlag = 0;
}
else {
listNode.next = new ListNode( (n1.val + n2.val + isFlag) % 10 );
isFlag = 1;
}
listNode = listNode.next;
}
while (n1.next != null){
n1 = n1.next;
if (n1.val + isFlag < 10){
listNode.next = new ListNode(n1.val + isFlag);
isFlag = 0;
}else {
listNode.next = new ListNode((n1.val + isFlag) % 10 );
isFlag = 1;
}
listNode = listNode.next;
}
while (n2.next != null){
n2 = n2.next;
if (n2.val + isFlag < 10){
listNode.next = new ListNode(n2.val + isFlag);
isFlag = 0;
}else {
listNode.next = new ListNode((n2.val + isFlag) % 10 );
isFlag = 1;
}
listNode = listNode.next;
}
if (isFlag == 1){
listNode.next = new ListNode(isFlag);
}
return l;
}
测试
先创建ListCode类
class ListNode{
int val;
ListNode next;
ListNode() {}
ListNode(int val) { this.val = val; }
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}
main方法
public static void main(String[] args) {
// ListNode l1 = new ListNode(2,new ListNode(4,new ListNode(3)));
// ListNode l2 = new ListNode(5,new ListNode(6,new ListNode(4)));
ListNode l1 = new ListNode(9,new ListNode(9,new ListNode(1)));
ListNode l2 = new ListNode(1);
ListNode listNode = addTwoNumbers(l1, l2);
while(listNode.next != null){
System.out.print(listNode.val);
System.out.print(",");
listNode = listNode.next;
}
System.out.println(listNode.val);
}