链表——两数相加

精简之后

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;
    }
}

猜你喜欢

转载自blog.csdn.net/zcy_wxy/article/details/85318676