Joh*_*Lui 7 arrays sorting algorithm
我最近在一次采访中遇到了这个问题.我真的无法想出答案.我开始,从第一个数组中获取第一个元素,然后在另一个数组中找到比这个元素多的元素.但是,我的意思是,我不知道,无法真正形成解决方案.问题如下:
给定两个排序的数组A和B,生成所有可能的数组,使得第一个元素从A中取出,然后从B中取出,然后从A中取出,依此类推,直到数组耗尽为止.生成的数组应以B中的元素结尾.
Eg:
A = {10, 15, 25}
B = {1, 5, 20, 30}
The resulting arrays are:
10 20
10 20 25 30
10 30
15 20
15 20 25 30
15 30
25 30
Run Code Online (Sandbox Code Playgroud)
我不是在寻找一个代码,只需一个algo/pseduo-code就行了.谢谢!
@dpmcmlxxvi提出的BFS解决方案很有意思.另外,我建议使用递归变体.一些基本要点:
数组已排序 - 使用该信息!当你看到排序数组时,总是想到二进制搜索 - 在这种情况下,你应该递归传递最后添加的元素,然后在另一个数组中,二元搜索第一个元素大于最后一个元素
如果最后添加的元素来自B,则将当前工作数组添加到结果列表中