给定两个队列,找出第一个中的哪些元素不在第二个中。

时间:2018-09-18 14:51:00

标签: data-structures

我尝试将所有元素放入两个数组,然后使用两个循环比较它们。但是要求我不要使用其他数据结构,而只能使用队列。

1 个答案:

答案 0 :(得分:0)

这样做的一种方法(不是特别有效)是将一个队列中的每个项目与另一个队列中的每个项目进行比较。如果您不能以数组形式访问队列,则只需将项目出队,进行比较,然后将其入队。假设您有以下两个队列:

q1 = [5, 7, 9, 3, 2, 8, 6]
q2 = [4, 2, 1, 10, 12, 3]

因此您从q1中删除了第一项:

x = q1.dequeue();

x现在等于5q1现在看起来像这样:

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中的所有项目为止。

这是与两个数组一起使用的算法,但是不是直接索引到数组中,而是使用队列将项目移到最前面。

我把编码留给你。