如何在两个堆栈中找到第一个常见的出现?

时间:2017-10-16 03:05:27

标签: java hash stack

我认为最好的路线是从第一个堆栈弹出一个元素,哈希它,然后看看弹出的第二个堆栈中的相同元素是否在地图中。这是正确的轨道吗?

示例:

stack1 = [1, 3, 4, 1, 2] 

stack2 = [8, 7, 3, 0]

第一个常见的事件是3。

编辑:我要哈希stack1,然后将stack2中的每个元素与该哈希进行比较。谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用一个代表所有数字的boolean数组,每次从其中一个数字中弹出,检查相应的数字是否已经发生,如果没有,如果没有将它设置为真:

boolean[] digits = new boolean[10];
int digit = stack1.pop();
if (digits[digit]) {
    // found the digit do something with it
} else {
    digits[digit] = true;
}

现在对stack2做同样的事情并循环,直到找到它或者不再有任何东西弹出来。