• 23. Merge k Sorted Lists


    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

    Example:

    Input:
    [
      1->4->5,
      1->3->4,
      2->6
    ]
    Output: 1->1->2->3->4->4->5->6


    直接复用归并排序即可

    /**
     * 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) {
            ListNode *res=NULL;
            for(int i=0;i<lists.size();++i)
            {
                if(NULL==res)
                {
                    res=lists[i];
                    continue;
                }
                res=merge(res,lists[i]);
            }
            return res;
        }
        
        ListNode* merge(ListNode *l1,ListNode *l2) {
            if(NULL==l1)return l2;
            if(NULL==l2)return l1;
            if(l1->val<l2->val)
            {
                l1->next=merge(l1->next,l2);
                return l1;
            }
            
            l2->next=merge(l1,l2->next);
            return l2;
        }
    };
  • 相关阅读:
    作业3
    学习进度
    作业2
    介绍自己,并介绍github注册过程和初步使用
    mysql显示中文乱码问题解决
    数学能力测试
    C++ Primer总结
    shell脚本
    完全二叉树
    test命令的测试功能
  • 原文地址:https://www.cnblogs.com/lychnis/p/11681717.html
Copyright © 2020-2023  润新知