我今天在面试中被问到了这个问题。我已经尝试过一种解决方案,但想知道是否有更好的方法来解决这个问题:
问题:我有一个数组列表,例如500,000个元素,每个元素的值与索引相同。例如:list.get(0) = 0; list.get(1) = 1 ... 等等。但是只有一个元素与此排序不一致 [即 list.get(i) != i]。如何找到该元素。
我的答案:使用多个线程迭代列表,每个线程处理列表的某个部分,每次将list.get(i)与i进行比较。当找到该元素时,设置某些布尔变量以指示其他线程已找到该元素。
有没有一种不迭代列表的方法来解决这个问题?或者有更好的方法吗?
问题:我有一个数组列表,例如500,000个元素,每个元素的值与索引相同。例如:list.get(0) = 0; list.get(1) = 1 ... 等等。但是只有一个元素与此排序不一致 [即 list.get(i) != i]。如何找到该元素。
我的答案:使用多个线程迭代列表,每个线程处理列表的某个部分,每次将list.get(i)与i进行比较。当找到该元素时,设置某些布尔变量以指示其他线程已找到该元素。
有没有一种不迭代列表的方法来解决这个问题?或者有更好的方法吗?