友情支持
如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜
有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。
公众号的微信号是: jikerizhi 。因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。 |
K-way merge 多路归并
K路归并能帮咱们解决那些涉及到多组排好序的数组的问题。
每当你的输入是K个排好序的数组,你就可以用堆来高效顺序遍历其中所有数组的所有元素。你可以将每个数组中最小的一个元素加入到最小堆中,从而得到全局最小值。当我们拿到这个全局最小值之后,再从该元素所在的数组里取出其后面紧挨着的元素,加入堆。如此往复直到处理完所有的元素。
该模式是这样的运行的:
-
把每个数组中的第一个元素都加入最小堆中
-
取出堆顶元素(全局最小),将该元素放入排好序的结果集合里面
-
将刚取出的元素所在的数组里面的下一个元素加入堆
-
重复步骤2,3,直到处理完所有数字
识别K路归并:
-
该问题的输入是排好序的数组,链表或是矩阵
-
如果问题让咱们合并多个排好序的集合,或是需要找这些集合中最小的元素