给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。
请你将两个数组相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字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
浙公网安备 33010602011771号