【发布时间】:2010-03-10 15:52:42
【问题描述】:
原问题:
我有 3 个盒子,每个盒子里有 200 个硬币,因为只有一个人从三个盒子里打了电话,因此每个盒子里有一枚硬币,指纹相同,其余硬币指纹不同。您必须从所有 3 个盒子中找到包含相同指纹的硬币。这样我们就可以从三个盒子中找到打电话的人的指纹。
转换后的问题:
您有 3 个数组,每个数组包含 200 个整数。假设这 3 个数组中只有一个公共元素。找到共同的元素。
请考虑解决这个问题,而不是简单的 O(1) 空间和 O(n^3) 时间。
【问题讨论】:
-
您能否澄清其中一个数组是否可以具有重复元素?例如,你能有
A = {1, 1, 1, 1, 1}; B = {2, 3, 4, 5, 1}; C = {2, 2, 2, 2, 1};吗? -
请仔细阅读qn。
-
另外,你说三个数组中只有一个共同元素。这是否意味着所有三个数组中只有一个元素出现,并且三个数组中只有两个可以具有其他共同元素,或者三个数组中的两个除了三个数组中的共同元素之外没有其他共同元素吗?
-
@Rajendra:我已经仔细阅读了,无论是原问题还是转换问题都可以有多种解释方式。回答是或否有那么难吗?
-
@Rajendra 感谢您的回答,这使问题变得非常简单。但是,我仍然认为您看到了不存在的东西。 “鉴于这 3 个数组中只有一个公共元素”意味着存在一个在 ALL 3 中出现的单个元素。它没有说明一个元素不能只出现在三个数组中的两个中,或者一个元素不能在一个数组中出现 199 次。但无论如何,我的解决方案忽略了这一点,只是考虑了你的“否”答案。祝你面试顺利。
标签: algorithm