leetcode[2]Add Two Numbers

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8

/**

 * Definition for singly-linked list.

 * struct ListNode {

 *     int val;

 *     ListNode *next;

 *     ListNode(int x) : val(x), next(NULL) {}

 * };

 */

class Solution {

public:

    ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {

      if(l1==NULL)return l2;

      if(l2==NULL)return l1;

      ListNode *l3=NULL;

      ListNode *p=l3;

      int flag=0;

      int res=0;

      while(l1!=NULL||l2!=NULL)

      {

          res=flag;

          if(l1!=NULL)

          {

              res+=l1->val;

              l1=l1->next;

          }

          if(l2!=NULL)

          {

              res+=l2->val;

              l2=l2->next;

          }

          if(l3==NULL)

          {

              l3=new ListNode(res%10);

              p=l3;

          }

          else

          {

              p->next=new ListNode(res%10);

              p=p->next;

          }

          flag=res/10;

      }

      if(flag)

      {

          p->next=new ListNode(flag);

          p=p->next;

      }

      return l3;

    }

};

 

你可能感兴趣的:(LeetCode)