精简之后
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
//设置进位位,当前结果值位,设置当前节点
int high=0;
int nowvalue=0;
ListNode now1=l1,now2=l2;
nowvalue=now1.val+now2.val;
high=nowvalue/10;
nowvalue%=10;
ListNode listnew=new ListNode(nowvalue),nodenow=listnew;
now1=now1.next;
now2=now2.next;
//获取两个链表中对应项的值
while(now1!=null||now2!=null||high==1){
//判空,相加,并判断是否超过十,超过则进位位置一,或者直接新建节点,作为新链表尾节点
if(now1!=null&&now2!=null){
nowvalue=now1.val+now2.val+high;
now1=now1.next;
now2=now2.next;
}else if(now1!=null){
nowvalue=now1.val+high;
now1=now1.next;
}else if(now2!=null){
nowvalue=now2.val+high;
now2=now2.next;
}else if(high==1){
nowvalue=1;
high=0;
}
high=nowvalue/10;
nowvalue%=10;
while(nodenow.next!=null)nodenow=nodenow.next;
nodenow.next=new ListNode(nowvalue);
}
return listnew;
}
}
精简之前
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
//设置进位位,当前结果值位,设置当前节点
int high=0;
int nowvalue=0;
ListNode now1=l1;
ListNode now2=l2;
nowvalue=now1.val+now2.val;
if(nowvalue>=10){
nowvalue%=10;
high=1;
}
ListNode listnew=new ListNode(nowvalue);
ListNode nodenow=listnew;
now1=now1.next;
now2=now2.next;
//获取两个链表中对应项的值
while(now1!=null||now2!=null||high==1){
//判空,相加,并判断是否超过十,超过则进位位置一,或者直接新建节点,作为新链表尾节点
if(now1!=null&&now2!=null){
nowvalue=now1.val+now2.val+high;
high=0;
if(nowvalue>=10){
nowvalue%=10;
high=1;
}else{
high=0;
}
now1=now1.next;
now2=now2.next;
}else if(now1!=null){
nowvalue=now1.val+high;
high=0;
if(nowvalue>=10){
high=1;
nowvalue%=10;
}
now1=now1.next;
}else if(now2!=null){
nowvalue=now2.val+high;
high=0;
if(nowvalue>=10){
high=1;
nowvalue%=10;
}
now2=now2.next;
}else if(high==1){
nowvalue=1;
high=0;
}
while(nodenow.next!=null)nodenow=nodenow.next;
nodenow.next=new ListNode(nowvalue);
}
return listnew;
}
}