gpt4 book ai didi

python - 找到 2 个堆栈的交集的最快和最有效的方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:40:39 24 4
gpt4 key购买 nike

面试题:求2个栈的交集。在 python 中,堆栈本质上只是具有 pop 和 push 功能的列表。交集是两个堆栈中第一个相同的项目(并且所有以下值也相同)

我现在想的是先判断他们的长度是否相同,如果不相同,就砍掉较长栈的前几个元素。

def intersect(s1, s2):
diff = abs(len(s1) - len(s2))
if diff > 0:
for i in range diff:
s1.pop()
else:
while s1[0] != s2[0]:
first = s1.pop()
second = s2.pop()
if compare(first, second) == True #use a comparator func to see if they're equal
return first

否则我想不出比同时为两个堆栈按线性顺序弹出项目并比较项目更好的方法。

我正在寻找带有解释的编码解决方案!谢谢

最佳答案

在你的例子中,我不太明白你如何使用二进制搜索。

一种可能的方法是将列表 A 和列表 B 分成两半,这样您就有了 4 个列表。由于没有竞争条件,您可以只使用多线程来更快地运行线性比较。

这是关于 how to use multithreading: 的教程

关于python - 找到 2 个堆栈的交集的最快和最有效的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51528617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com