16.合併兩個反轉鏈表

合併兩個反轉鏈表

題目鏈接

題目描述

輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。

遞歸

歸併:把整個過程分爲很多個子過程,每個過程滿足規則,然後合併子過程。

鏈表1和鏈表2誰的首結點值小,誰就作爲鏈表的首結點。一直判斷到某一鏈表爲NULL,直接將鏈表接上即可。

時間複雜度O(n),空間複雜度O(n)。

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
    {
        if (!pHead1)
        {
            return pHead2;
        }
        if (!pHead2)
        {
            return pHead1;
        }
        ListNode *node = NULL;
        if (pHead1->val < pHead2->val)
        {
            node = pHead1;
            node->next = Merge(pHead1->next, pHead2);
        }
        else
        {
            node = pHead2;
            node->next = Merge(pHead1, pHead2->next);
        }
        return node;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章