需要提示来设计一种有效的算法,该算法采用以下输入并吐出以下输出。
输入:两个排序的整数数组 A 和 B,每个长度为 n
输出:一个由数组 A 和 B 的笛卡尔积组成的排序数组。
For Example:
Input:
A is 1, 3, 5
B is 4, 8, 10
here n is 3.
Output:
4, 8, 10, 12, 20, 24, 30, 40, 50
这是我解决这个问题的尝试。
1) 鉴于输出为 n^2,高效算法的时间复杂度不能超过 O(n^2)。
2)首先我尝试了一种简单但效率低下的方法。生成 A 和 B 的笛卡尔积。它可以在 O(n^2) 时间复杂度内完成。我们需要存储,所以我们可以对其进行排序。因此也是 O(n^2) 空间复杂度。现在我们对 n^2 个元素进行排序,这些元素不能比 O(n^2logn) 做得更好,而不对输入做任何假设。
最后我有 O(n^2logn) 时间和 O(n^2) 空间复杂度算法。
必须有更好的算法,因为我没有利用输入数组的排序特性。