博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Merge k Sorted Arrays
阅读量:7243 次
发布时间:2019-06-29

本文共 1110 字,大约阅读时间需要 3 分钟。

Given k sorted integer arrays, merge them into one sorted array.

Given 3 sorted arrays:

[  [1, 3, 5, 7],  [2, 4, 6],  [0, 8, 9, 10, 11]]

return [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].

 这题和merge k sorted lists 一脉相承,但是处理起来要复杂些,即linked list可以非常容易的从当前结点通过.next找到它的下一个结点。但是arrays本身不可以,所以需要知道当前处理的是第几个数组,是这个数组中的什么位置。所以每次push进heap时同时要push进该元素来自第几个数组。但是这还不够,不知道具体在这个数组中是第几个位置。这里可以采取非常类似于的做法,维护一个times数组,表示当前处理到该数组的哪里了。代码如下:

class Solution:    # @param {int[][]} arrays k sorted integer arrays    # @return {int[]} a sorted array    def mergekSortedArrays(self, arrays):        import heapq        if not arrays:            return []        heap = []        indexs = [0] *len(arrays)        for i in xrange(len(arrays)):            if arrays[i]:                heap.append((arrays[i][0],i))        res = []        heapq.heapify(heap)        while heap:            val, n = heapq.heappop(heap)            res.append(val)            indexs[n] += 1            if indexs[n] < len(arrays[n]):                heapq.heappush(heap,(arrays[n][indexs[n]],n))        return res

 

转载于:https://www.cnblogs.com/sherylwang/p/5595114.html

你可能感兴趣的文章
spring数据绑定默认的日期解析格式解析不了yyyy格式
查看>>
poi 下拉框实现
查看>>
百度地图通过地址得到经纬度
查看>>
ubuntu环境部署项目
查看>>
BZOJ 1017 魔兽地图DotR(树形DP)
查看>>
ecshop价格区间导航
查看>>
有时间可研究的题目
查看>>
3Sum
查看>>
vue -- 项目打包优化
查看>>
React实践debug:JSX输出的限制(存疑)
查看>>
Dapper.Rainbow 简单使用
查看>>
web基础
查看>>
Spring 5 新特性:函数式Web框架
查看>>
IoC
查看>>
微软视频学习
查看>>
第三章:垃圾回收器-G1收集器
查看>>
XML 和 List 互转类
查看>>
Grunt 快速入门
查看>>
《几何与代数导引》例2.9
查看>>
vc 获取窗口标题GetWindowText
查看>>