面试问题:找到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
否则,除了以线性顺序同时弹出两个堆栈的项目并比较项目外,我想不出更好的方法。
我正在寻找带有解释的编码解决方案!谢谢
汪汪一只猫
MMTTMM
相关分类