题目链接:LeeCode2两数相加
题目描述:
看题目就是反着加,考虑进位问题,跟大数相加的原理差不多,建立了一个节点数组用来存每位节点该存的数据,cnt用来存进位的数,最后把所有节点连接到一起返回头节点就ok了
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode[] l3 = new ListNode[105];
int i = 0, cnt =0,sum=0;
while (l1 != null || l2 != null||cnt!=0) {
if(l1!=null&&l2!=null) {
sum = l1.val + l2.val + cnt;
l1=l1.next;
l2=l2.next;
}
else if(l1==null&&l2!=null) {
sum=l2.val+cnt;
l2=l2.next;
}
else if(l2==null&&l1!=null) {
sum=l1.val+cnt;
l1=l1.next;
}
else if(l1==null&&l2==null){
sum=cnt;
}
cnt = sum / 10;
l3[i]=new ListNode(sum%10);
i++;
}
int j=0;
while (l3[j]!=null){
l3[j].next=l3[j+1];
j++;
}
return l3[0];
}
}