我尝试将所有元素放入两个数组,然后使用两个循环比较它们。但是要求我不要使用其他数据结构,而只能使用队列。
答案 0 :(得分:0)
这样做的一种方法(不是特别有效)是将一个队列中的每个项目与另一个队列中的每个项目进行比较。如果您不能以数组形式访问队列,则只需将项目出队,进行比较,然后将其入队。假设您有以下两个队列:
q1 = [5, 7, 9, 3, 2, 8, 6]
q2 = [4, 2, 1, 10, 12, 3]
因此您从q1中删除了第一项:
x = q1.dequeue();
x
现在等于5
,q1
现在看起来像这样:
q1 = [7, 9, 3, 2, 8, 6]
现在,对于q2
中的每个项目,将其从队列中删除,将其与x
进行比较,然后重新排队。像这样:
y = q2.dequeue();
if (x == y) { print "matching item " + x; }
q2.enqueue(y);
您需要对q2
中的每个项目执行此操作。
然后,将x
添加回q1
,结果:
q1 = [7, 9, 3, 2, 8, 6, 5]
然后,重复该过程。从q1
出队,对q2
中的每个项目进行测试。直到您检查了q1
中的所有项目为止。
这是与两个数组一起使用的算法,但是不是直接索引到数组中,而是使用队列将项目移到最前面。
我把编码留给你。