LeetCode 21-2つの秩序チェーンテーブルを結合


1.テーマ
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 *head = new ListNode(0); //       ,    
            ListNode *temp = head;
            
            //             ,                 
            while(l1 && l2)
            {
                if (l2->val <= l1->val)
                {
                    temp->next = l2;
                    temp = temp->next;
                    l2 = l2->next;
                }
                else
                {
                    temp->next = l1;
                    temp = temp->next;
                    l1 = l1->next;
                }
            }
            
            //           ,                       
            if (l1)
            {
                temp->next = l1;
            }
            else
            {
                temp->next = l2;
            }
            
            temp = head;
            head = head->next;//       
            delete(temp);
            
            return head;  
        }
    };

    もっと素晴らしいものを手に入れて、「seniusen」に注目してください!