给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。

请你将两个数组相加,并以相同形式返回一个表示和的链表。

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

 

 思路:就是两数相加,每个位置上的数字对应相加,还要考虑进位的情况。另外一个链表的长度比另一个链表的长度长的情况。

方法:

public class ListNode {
    public int val;
    public ListNode next;
    public ListNode(){}
    public ListNode(int val){this.val=val;}
    public ListNode(int val,ListNode next){this.next=next;}
}
public class Solution{
     public static ListNode addTwoNumbers(ListNode l1,ListNode l2){
          if(null==l1){
              return l2;
          }
          if(null==l2){
              return l1;
          }
          int carry=0;
          int remainder=0;
          ListNode listNode=new ListNode(0);
          ListNode node=listNode;
          ListNode tempNode;
          while(null!=l1&&null!=l2){
               sum=l1.val+l2.val+carry;
               carry=sum/10;
               remainder=sum%10;
               tempNode=new ListNode(remainder);
               listNode.next=tempNode;
               listNode=listNode.next;
               l1=l1.next;
               l2=l2.next;
          }
          while(null!=l1){
               sum=l1.val+carry;
               carry=sum/10;
               remainder=sum%10;
               tempNode=new ListNode(remainder);
               listNode.next=tempNode;
               listNode=listNode.next;
               l1=l1.next;
          }
          while(null!=l2){
               sum=l2.val+carry;
               carry=sum/10;
               remainder=sum%10;
               tempNode=new ListNode(remainder);
               listNode.next=tempNode;
               listNode=listNode.next;
               l2=l2.next;
          }
          if(carry>0){
               tempNode=new ListNode(carry);
               listNode.next=tempNode;
          }
          return node.next;
     }
}

 

 posted on 2021-05-26 14:36  会飞的金鱼  阅读(46)  评论(0)    收藏  举报