题意:两个整数用list表示,求他们的和,高位在list尾部
思路:
遍历两个list,每次把两个数,及进位相加,当前数为和求余10,进位为和除以10,知道有一个list结束,并查看两个list,把没有遍历完的list中的元素放到结果list的后边,其中要注意进位
时间:O(n)
空间:O(n+m)
public class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode newhead = new ListNode(0);
ListNode runner = newhead;
int carrier = 0;
while(l1!=null&&l2!=null)
{
int cur = l1.val+l2.val+carrier;
runner.next = new ListNode(cur%10);
carrier = cur/10;
l1 = l1.next;
l2 = l2.next;
runner = runner.next;
}
while(l1!=null)
{
int cur = l1.val + carrier;
runner.next = new ListNode(cur%10);
carrier = cur/10;
l1 = l1.next;
runner = runner.next;
}
while(l2!=null)
{
int cur = l2.val + carrier;
runner.next = new ListNode(cur%10);
carrier = cur/10;
l2 = l2.next;
runner = runner.next;
}
if(carrier!=0)
{
runner.next = new ListNode(carrier);
}
return newhead.next;
}
}