如果有这比O(解决 ñ ²登录 ñ),它需要做的不仅仅是利用A和B都已经排序的事实。
Srikanth想知道如何在O( n)空间中完成此操作(不计算输出空间)。这可以通过延迟生成列表来完成。
假设我们有A = 6,7,8和B = 3,4,5。首先,将A中的每个元素乘以B中的第一个元素,并将它们存储在列表中:
6×3 = 18、7×3 = 21、8×3 = 24
找到此列表中最小的元素(6×3),将其输出,用A中的该元素替换它乘以B中的下一个元素:
7×3 = 21、6 ×3 = 24
在此列表中找到新的最小元素(7×3),将其输出并替换:
6×4 = 24、8×3 = 24、7
等等。我们只需要O( n )空间用于此中间列表,并且如果将列表保留在堆中,则在每个阶段查找最小的元素将花费O(logn )时间。