我的想法是需要O(n m)
这是因为
1 2 3 4
4 3 2 1
为了找到公共元素,您将遍历排序数组和未排序数组(在这种情况下,顶部数组已排序)。最坏的情况是,未排序的数组将是除反转之外的排序数组。因此,你会比较1,4,然后是1,3,然后是...等。然后你会比较2,4然后2,3等。
因此,您最终会得到O(n m)
这是对的吗?
答案 0 :(得分:1)
致j_random_hacker,
应为O(log(n)* m)
您可以使用二进制搜索查找已排序数组中未排序数组中的每个项目,即log(n)时间。对于未排序数组中的每个项目,这应该是O(log(n)* m)时间。
答案 1 :(得分:1)
最快的解决方案是将较小数组的元素放入哈希表中,然后查找较大表的元素。实际上,这是O(max(n,m))。