LeetCode--23. Merge k Sorted Lists

来源:互联网 发布:穿越火线刷装备软件 编辑:程序博客网 时间:2024/05/20 17:25

题目来源LeetCode.23 Merge k Sorted Lists
题意:将多个已经排好序的链表合并成一个排好序的链表

主要的思想就是课堂上所学的Divide and Conquer,将大问题分成若干个小问题。在这里可以将链表不断两两合并,最后形成的就是一个排好序的总的链表。

代码段如下:

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* mergeKLists(vector<ListNode*>& lists) {        if(lists.size() == 0)return NULL;        while(lists.size() > 1){            ListNode *list1 = lists.front();            lists.erase(lists.begin());            ListNode *list2 = lists.front();            lists.erase(lists.begin());            ListNode *result= merge(list1,list2);            lists.push_back(result);        }        return lists.front();    }private:    ListNode *merge(ListNode *list1, ListNode *list2){        if(list1 == NULL){             return list2;         }         else if(list2 == NULL){             return list1;         }         else if(list1->val <= list2->val){             list1->next = merge(list1->next, list2);             return list1;         }         else{             list2->next = merge(list1, list2->next);             return list2;         }    }};
0 0
原创粉丝点击