leetcode 21. 2つの順序付きチェーンテーブルを結合

1573 ワード

21.2つの秩序チェーンテーブルを結合する
問題の説明のヒントは記録コミュニティの討論を提出して解答を読むことを助けます
ランダムな問題
2つの順序付きチェーンテーブルを新しい順序付きチェーンテーブルに結合して返します.新しいチェーンテーブルは、指定された2つのチェーンテーブルのすべてのノードを接合することによって構成されます. 
例:
入力:1->2->4、1->3->4
出力:1->1->2->3->4->4
構想
考え方:比較的簡単で、肝心なのはチェーンテーブルに関する知識を忘れることです.2つのチェーンテーブルのサイズを直接比較し、小さいものに新しいチェーンテーブルを追加し、->next;新しいチェーンテーブル、ポインタ、チェーンテーブルの構造に注意
新しいチェーンテーブルを定義する:ListNode*pre=new ListNodeヘッダノード随意:ListNode*pre=new ListNode(0);定義ポインタ:ListNode*ret=pre;//始点を指す
2つの順序付きチェーンテーブルを新しい順序付きチェーンテーブルに結合して返します.新しいチェーンテーブルは、指定された2つのチェーンテーブルのすべてのノードを接合することによって構成されます. 
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {

        ListNode *pre=new ListNode(0);
        ListNode *ret=pre;
        if(!l1&&!l2){
            return NULL;
        }
        else if(l1==NULL){
            return l2;
        }
        else if(l2==NULL){
            return l1;
        }
        
        while(l1!=NULL&&l2!=NULL){
            if(l1->valval){
                ret->next=l1;
                l1=l1->next;
            }
            else{
                ret->next=l2;
                l2=l2->next;
            }  
            ret=ret->next;
        }
        if(l1) {ret->next=l1;}
        else {ret->next=l2;}
        return pre->next;
        
        
    }
};