原题地址
https://leetcode-cn.com/problems/add-two-numbers/
想法
这是一道链表题,我觉得本题的解题重心放在两个地方
- 数学的逻辑,即从个位开始,加在一起,如果有进位,需要保留进位,下一次再加。
- 链表的记录,需要有两个因素,一个是链表的表头(用来找到结果),一个光标(实时的增加得数)。
解法
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int num = 0;
ListNode preNode = new ListNode(0);
ListNode curosr=preNode;
while (l1 != null || l2 != null||num!=0) {
int sum=num;
if (l1 != null) {
sum+=l1.val;
l1=l1.next;
}
if (l2 != null) {
sum+=l2.val;
l2=l2.next;
}
num=sum/10;
curosr.next=new ListNode(sum%10);
curosr=curosr.next;
}
return preNode.next;
}
}