p86 求2个链表之和(leetcode 2)

Posted repinkply

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了p86 求2个链表之和(leetcode 2)相关的知识,希望对你有一定的参考价值。

一:解题思路

这个题目和上一道二进制求和题目类似。Time:O(max(m,n)),Space:O(n)

二:完整代码示例 (C++版和Java版)

C++:

class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) 
    {
        ListNode* dummy = new ListNode(0);
        ListNode*p = dummy;
        int carry = 0;

        while (l1 != NULL || l2 != NULL || carry != 0)
        {
            int sum = carry;
            if (l1 != NULL)
            {
                sum += l1->val;
                l1 = l1->next;
            }
            if (l2 != NULL)
            {
                sum+=l2->val;
                l2 = l2->next;
            }
            p->next = new ListNode(sum%10);
            p = p->next;
            carry = sum / 10;
        }

        return dummy->next;
    }
};

Java:

class Solution {
        public ListNode addTwoNumbers(ListNode l1, ListNode l2) 
        {
              ListNode dummy=new ListNode(0);
              ListNode p=dummy;
              int carry=0;
              while(l1!=null || l2!=null || carry!=0)
              {
                  int sum=carry;
                  if(l1!=null)
                  {
                      sum+=l1.val;
                      l1=l1.next;
                  }
                  if(l2!=null)
                  {
                      sum+=l2.val;
                      l2=l2.next;
                  }
                  p.next=new ListNode(sum%10);
                  p=p.next;
                  carry=sum/10;
              }
              
              return dummy.next;
        }
    }

 

以上是关于p86 求2个链表之和(leetcode 2)的主要内容,如果未能解决你的问题,请参考以下文章

PHP 合并2个链表

将 3 个链表合并为 1 个(Java)

36两个链表的第一个公共结点

[LeetCode]23. Merge k Sorted Lists

剑指offer——两个链表的公共节点

每日leetcode一题两数相加