天天看點

LeetCode - 2. Add Two Numbers2. Add Two Numbers  Problem's Link

 ----------------------------------------------------------------------------

Mean: 

給你兩個數字連結清單,讓你将兩個連結清單相加,結果儲存在一個新連結清單中.

analyse:

最基本的連結清單操作.

做連結清單題時隻需注意:先配置設定(new ListNode(val)),再h=h->next.也就是不要将指針指向空指針.

Time complexity: O(N)

view code

/**

* -----------------------------------------------------------------

* Copyright (c) 2016 crazyacking.All rights reserved.

*       Author: crazyacking

*       Date  : 2016-01-29-16.16

*/

#include <queue>

#include <cstdio>

#include <set>

#include <string>

#include <stack>

#include <cmath>

#include <climits>

#include <map>

#include <cstdlib>

#include <iostream>

#include <vector>

#include <algorithm>

#include <cstring>

using namespace std;

typedef long long(LL);

typedef unsigned long long(ULL);

const double eps(1e-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)

   {

       int jinwei=0;

       ListNode *h1=l1;

       ListNode *h2=l2;

       ListNode *ans,*ret;

       bool isFirst=true;

       while(h1&&h2)

       {

           int val=h1->val+h2->val+jinwei;

           int now=val%10;

           jinwei=val/10;

           if(isFirst)

           {

               ans=new ListNode(now);

               ret=ans;

               isFirst=false;

           }

           else

               ans->next=new ListNode(now);

               ans=ans->next;

           h1=h1->next;

           h2=h2->next;

       }

       while(h1)

           int val=h1->val+jinwei;

       while(h2)

           int val=h2->val+jinwei;

       while(jinwei)

           ans->next=new ListNode(jinwei%10);

           jinwei/=10;

           ans=ans->next;

       return ret;

   }

int main()

   int n1,n2;

   while(cin>>n1>>n2)

       ListNode *h1,*head1;

       ListNode *h2,*head2;

       int tmp;

       for(int i=0; i<n1; ++i)

           cin>>tmp;

           if(!i)

               h1=new ListNode(tmp);

               head1=h1;

               h1->next=new ListNode(tmp);

               h1=h1->next;

       for(int i=0; i<n2; ++i)

               h2=new ListNode(tmp);

               head2=h2;

               h2->next=new ListNode(tmp);

               h2=h2->next;

       Solution solution;

       ListNode* ans=solution.addTwoNumbers(head1,head2);

       puts("----------------------");

       while(ans)

           cout<<ans->val;

       cout<<endl;

   return 0;

}

上一篇: git command
下一篇: kmp+

繼續閱讀