当前位置: 首页 > 面试题库 >

在两个排序列表中查找匹配项的更好方法比使用for循环好吗?

澹台正业
2023-03-14
问题内容

我有两个排序列表,都以非降序排列。例如,我有一个包含元素的排序链表[2,3,4,5,6,7...],另一个有元素的链表[5,6,7,8,9...]

我需要在两个列表中都找到所有常见的元素。我知道我可以使用for循环和嵌套循环来迭代所有匹配项以找到相同的两个元素。但是,还有另一种方法可以使运行时间少于O(n^2)


问题答案:

您可以在O(n)时间内完成。伪代码:

a = list1.first
b = list2.first
repeat:
    if a == b:
        output a
        a = list1.next
        b = list2.next
    elif a < b:
        a = list1.next
    else
        b = list2.next
until either list has no more elements


 类似资料:
  • 问题内容: 以下哪个更适合使用,为什么? 方法1: 方法2: 我倾向于通向第一个更容易理解,但这可能只是因为我是Python的新手,并且列表理解对我来说仍然有些陌生。第二种方法是否更像Pythonic?我假设没有性能差异,但是我可能是错的。这两种技术的优缺点是什么? (从 Dive到Python的代码 ) 问题答案: 如果迭代是出于其副作用而进行的(如“打印”示例中所示),则循环更加清晰。 如果执

  • 问题内容: 我想创建一个新的对象数组,将两个较小的数组放在一起。 它们不能为null,但大小可以为0。 我无法在这两种方式之间进行选择:它们是等效的还是效率更高的(例如system.arraycopy()复制整个块)? 要么 唯一的区别是代码的外观吗? 编辑: 感谢链接的问题,但他们似乎有一个未解决的讨论: 是否真的更快:byte [],Object [],char []?在所有其他情况下,都将执

  • 问题内容: 使用SQL 2012并将XML传递到存储过程中,该过程必须接受该输入,并为传递到该存储过程的XML部分中的每个项目在表中写一行。XML看起来像: 存储过程的输出应该是将5行插入到一个表中(上面每个插入一行),并且在该表的和字段中每个字段具有相同的值。 我可以得到的数量并可以获取XML,但是我不知道如何遍历它来进行插入。 我可以使用以下SQL来获取XML中的内容。 目前,我正在使用变量和

  • Edit:是我现在正在做的事情,但是由于只是返回,所以这似乎是对Map的误用。另外,它读起来并不像是商业逻辑。 最后编辑:我接受了@Holger的回答。不能期望处理流上的所有元素,因为它不是终端操作。也是如此。即使您可能已经终止了您的流,以保证它将处理所有操作,您也不应该编写期望每个用户都这样做的代码。因此,要进行处理,您应该在上使用,然后根据需要再次开始对进行流式处理。

  • 问题内容: 我有两个不同形状的numpy数组,但是长度(引导尺寸)相同。我想对它们中的每一个进行混洗,以使相应的元素继续对应-即相对于其前导索引一致地对它们进行混洗。 该代码有效,并说明了我的目标: 例如: 但是,这感觉笨拙,效率低下且速度慢,并且需要复制数组-我宁愿就地对它们进行混洗,因为它们会很大。 有没有更好的方法来解决这个问题?更快的执行速度和更低的内存使用是我的主要目标,但是优雅的代码也

  • 问题内容: 我正在寻找Java的良好排序列表。到处搜寻可以给我一些有关使用TreeSet / TreeMap的提示。但是这些组件缺少一件事:随机访问集合中的元素。例如,我想访问排序集中的第n个元素,但是使用TreeSet时,我必须遍历其他n-1个元素,然后才能到达那里。因为我的集合中最多有数千个元素,所以这很浪费。 基本上,我正在寻找与.NET中的排序列表类似的东西,能够快速添加元素,快速删除元素