【发布时间】:2012-04-26 14:07:38
【问题描述】:
我今天在一次采访中被问到这个问题。我尝试了一个解决方案,但想知道是否有更好的方法来解决这个问题:
问题:我有一个 500,000 个元素的数组列表,因此数组列表中每个元素的值与索引相同。例如:list.get(0) = 0; list.get(1) = 1 ...等等。但只有一个元素与此顺序不同步 [即 list.get(i) != i]。你是怎么找到那个元素的。
我的答案:每次比较 list.get(i) 和 i 时,使用多个线程每个线程处理 arraylist 的特定拼接来迭代列表。找到元素后,设置一些布尔变量以向其他线程指示已找到该元素。
有没有办法在不遍历列表的情况下解决这个问题?还是更好的方法?
【问题讨论】:
-
没有提示这个数字可能在列表中的位置,这个问题有点无聊。
-
我认为您必须解释“只有一个元素不同步”的真正含义..这没有意义..请参阅下面的答案。我想如果你移动一个元素,所有剩余的元素都会不同步,不是吗?
-
@dued0r 该元素未被删除。面试官问如何识别与索引值不一样的元素。
-
我认为这不是要找到一种同时访问不同区域的方法......更多的是减少数据访问......
标签: java algorithm collections