Need Hints设计一个有效的算法,接受以下输入并输出以下输出。
输入:两个已排序的整数数组 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) 空间复杂度算法。
一定有更好的算法,因为我没有使用过sorted输入数组的性质。