有没有一种方法可以比较两个arrayLists,以查看它们中的任何一个在任何时候都具有相等的值?我知道我可以使用两个嵌套循环,但是我想在log(n)时间内执行此操作,因此,我尝试执行与在mergesort中合并两个列表的方法类似的操作,但是我不能弄清楚如何实现它。任何帮助将不胜感激!谢谢!
编辑:是的,我是说nlog(n),不是log(n),对不起

最佳答案

您不能在O(log(n))中执行此操作。

您可以使用O(n*log(n))来实现此目的,方法是先对两个列表进行排序,然后按元素进行比较(排序采用nlogn并比较n

您可以这样做:


创建以0初始化的变量i, j
遍历列表并将l1.get(i)l2.get(j)比较


3a。相等:同时增加两个i, j(也许还可以记住元组)

3b。 l1的元素小于l2的元素:仅递增i

3c。 l1的元素大于l2的元素:仅递增j


退出循环(如果一个索引超出范围)


您不需要在列表中扫描不超出范围的索引,因为您只对相等的值感兴趣。

10-07 18:58
查看更多