zoukankan      html  css  js  c++  java
  • 边工作边刷题:70天一遍leetcode: day 95

    Merge two/k Sorted List

    要点:除了brute force,还有三种方法:

    • PriorityQueue:这个就一个个list node push到q里,q的size是k,所有每次某个node出q,把下一个(如果存在)也push进来。
    • 递归:先做左右两边,然后递归回来正确的位置merge
    • iteration: 要点就是step len作outer loop,inner loop以step为步长X2循环两两merge
    • 2、3都是保证在数组相应的有效位置存相应的list

    brute force的time complexity是O(nkk):如果依次merge,那么总的time为n+2n+3n+...+kn,而上面三种方法都是O(nklgk)

    # Definition for singly-linked list.
    # class ListNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution(object):
        def mergeKLists(self, lists):
            """
            :type lists: List[ListNode]
            :rtype: ListNode
            """
       
    
  • 相关阅读:
    主席树学习记录
    P1072 Hanson 的趣味题 题解
    好文章收集
    计算几何专题
    小问题
    CSP-S2020题解
    上下界网络流
    想到的无法解决的点子
    省选联考2020组合数问题
    省选数学复习
  • 原文地址:https://www.cnblogs.com/absolute/p/5983275.html
Copyright © 2011-2022 走看看