23.Merge k Sorted Lists

来源:互联网 发布:完美芦荟胶淘宝官网 编辑:程序博客网 时间:2024/05/01 08:04
/**此算法用到前面的两个链表的合并算法,此算法的核心思想就是合并排序算法,链表两两合并,知道最后成为一个链表 * 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*L = NULL,*q=NULL;if (l1 == NULL&&l2 == NULL)return NULL;if (l1== NULL&&l2!= NULL)return l2;if (l1 != NULL&&l2== NULL)return l1; L = new ListNode(0);q = L;while (l1 != NULL&&l2 != NULL){if (l1->val <= l2->val){q->next = l1;l1 = l1->next;}else{q->next = l2;l2 = l2->next;}q = q->next;}if (l1 == NULL)q->next = l2;elseq->next = l1;return L->next;    }   ListNode* mergeKLists(vector<ListNode*>& lists) {        if(lists.empty()==true)        return NULL;        while (lists.size() !=1){lists.push_back(mergeTwoLists(lists[0], lists[1]));lists.erase(lists.begin(),lists.begin()+2);}return lists[0];    }  };

0 0
原创粉丝点击