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
            """
       
    
  • 相关阅读:
    h5-7
    h5-6
    h5-5
    h5-4
    h5-3
    h5-2
    return
    字符串的常用操作
    字符串中的转义字符
    字典的统计,合并,清空操作
  • 原文地址:https://www.cnblogs.com/absolute/p/5983275.html
Copyright © 2011-2022 走看看