题解 | #合并k个已排序的链表#

合并k个已排序的链表

http://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6

C++ 先排序在逐个合并

 * 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) {
        sort(lists.begin(),lists.end(),[](const ListNode * A,const ListNode *B){
            if(A && B)return A->val<B->val;
            else if(!A) return true;
            else if(!B) return false;
            else return false;});
        ListNode* ahead = new ListNode(0);
        ListNode* head = new ListNode(0);
        int len = lists.size();
        if(len == 0) return nullptr;
        int j ;
        for( j = 0; j < len; ++j){
            if(lists[j]){
                head = lists[j];
                break;
            }
        }
        ++j;
        ahead = head;
        for(int i = j; i < len; ++ i){
            ListNode* node = lists[i];
            if(!node) continue;
            ListNode* pre = nullptr;
            while(node){
                ListNode* nxt = node->next;
                while(head && head->val <= node->val){
                    pre = head;
                    head = head->next;
                }
                pre->next = node;
                node->next = head;
                pre = pre->next;
                head = pre->next;
                node = nxt;
            }
            head = ahead;
        }
        return ahead;
    }
};
全部评论

相关推荐

04-16 12:49
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
04-30 21:35
已编辑
长安大学 C++
晓沐咕咕咕:评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务