2.两书相加

2.两书相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-two-numbers

/**
 * 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) {
        ListNode h1=l1;
        ListNode h2=l2;
        ListNode l3 = new ListNode(0);
        ListNode h3 = l3;
        while(h1!=null && h2!= null)
        {
            h3.val+=(h1.val+h2.val);
            if(h3.val>=10) 
            {
                h3.val-=10;
                h3.next=new ListNode(1);
            }
            else h3.next=new ListNode(0);
            h3=h3.next;
            h1=h1.next;
            h2=h2.next;
        }
        if(h1!=null && h2==null){
            while(h1!=null)
            {
                h3.val+=h1.val;
                if(h3.val>=10){
                    h3.next=new ListNode(1);
                    h3.val-=10;
                }
                else h3.next=new ListNode(0);
                h3=h3.next;
                h1=h1.next;
            }
        }
        else if(h1==null &&h2!=null){
            while(h2!=null){
                h3.val+=h2.val;
                if(h3.val>=10){
                    h3.next=new ListNode(1);
                    h3.val-=10;
                }
                else h3.next=new ListNode(0);
                h3=h3.next;
                h2=h2.next;
            }
        }
        h3=l3;
        while(h3.next.next!=null) h3=h3.next;
        if(h3.next.val==0)  h3.next=null;
        return l3;
    }
}
发布了27 篇原创文章 · 获赞 2 · 访问量 758

猜你喜欢

转载自blog.csdn.net/qq_44028171/article/details/98755133