题解 | #合并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-17 09:29
已编辑
湖南农业大学 后端
睡姿决定发型丫:本硕末9也是0offer,简历挂了挺多,只有淘天 美团 中兴给了面试机会,淘天二面挂,美团一面kpi面,中兴一面感觉也大概率kpi(虽然国企,但一面0技术纯聊天有点离谱吧)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务