我认为最好的路线是从第一个堆栈弹出一个元素,哈希它,然后看看弹出的第二个堆栈中的相同元素是否在地图中。这是正确的轨道吗?
示例:
stack1 = [1, 3, 4, 1, 2]
stack2 = [8, 7, 3, 0]
第一个常见的事件是3。
编辑:我要哈希stack1,然后将stack2中的每个元素与该哈希进行比较。谢谢!
答案 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
做同样的事情并循环,直到找到它或者不再有任何东西弹出来。