我今天接受采访时被问到这个问题。我尝试了一个解决方案,但想知道是否有更好的方法来解决这个问题:
问题:我有一个包含 500,000 个元素的数组列表,因此数组列表中每个元素的值与索引相同。例如:list.get(0) = 0; list.get(1) = 1 ...等等。但只有一个元素与此顺序不同步 [即 list.get(i) != i]。你如何找到那个元素。
我的答案:每次比较 list.get(i) 和 i 时,每个线程处理 arraylist 的某个拼接,使用多个线程迭代列表。找到元素后,设置一些布尔变量以向其他线程指示已找到该元素。
有没有办法在不遍历列表的情况下解决这个问题?还是更好的方法?