• 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

    AC code:

    /**
     * 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 nullptr;
            }
            while (lists.size() > 1) {
                lists.push_back(mergeTowLists(lists[0], lists[1]));
                lists.erase(lists.begin());
                lists.erase(lists.begin());
            }
            return lists.front();
        }
        
        ListNode* mergeTowLists(ListNode* first, ListNode* second) {
            if (first == nullptr) {
                return second;
            } 
            if (second == nullptr) {
                return first;
            }
            // 这个地方first是一个指向链表的指针所以用->而不用.
            if (first->val <= second->val) {
                // 这里的递归调用,当满足条件的时候mergeTowLists()可以先不用管,最后递归出来的时候会将满足条件的链表返回
                // 可以先从递归的最后一个条件考虑
                first->next = mergeTowLists(first->next, second);
                return first;
            } else {
                second->next = mergeTowLists(first, second->next);
                return second;
            }
        }
    };
    

    Runtime: 56 ms, faster than 26.25% of C++ online submissions for Merge k Sorted Lists.

                      递归的最后一个:

    return:                      ->  6

    return:                 ->   5    ->   6

                     4   ->   5    ->   6

                . . . . .

    return  1  ->  1  ->  2  ->  3  ->  4  ->   4   ->   5 ->   6

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    Centos 卸载Docker
    若依微服务版本 Windows下开发环境搭建
    Iterator 其实很简单(最好理解的工厂模式的例子)
    MySQL replace into详解
    MYSQL事务隔离
    Linux下rpm卸载安装MySQL出现specifies multiple packages
    linux删除文件夹的时候出现设备或者资源忙
    IOS下的safari下localStorage不起作用的问题
    windows下nginx配置报错GetFileAttributesEx
    Linux下增加swap的方法
  • 原文地址:https://www.cnblogs.com/h-hkai/p/9745892.html
Copyright © 2020-2023  润新知