我想通过仅使用一个for循环从数组中找到重复项。我通过使用两个for循环来做到这一点。我怎么能用Java做到这一点?
duplicates = false;
for (int i = 0; i < array.length; i++){
for(int j = i+1; j < array.length; j++){
if(name[i].equals(name[j])){
duplicates = true;
}
}
}
答案 0 :(得分:1)
你可能会考虑使用Set,否则你可能需要做两个循环。以下示例不会有重复项。请记住,我不保证此选项具有更高的性能。性能方面,使用原始数组比使用java collection apis'
更好Set setString = new LinkedHashSet();
for(int i=0;i<array.length;i++){
setString.add(array[i]);
}
}
答案 1 :(得分:1)
我想先找出重复的内容。那么如何在不使用
HashSet
或其他的情况下仅使用一个for循环来完成此操作。这是我的目标。
这是不可能的。
实际上,如果你作弊就有可能。
int len = array.length;
boolean duplicates = false;
for (int i = 0; i < len * len; i++){
if (name[i / len].equals(name[i % len])){
duplicates = true;
}
}
但这仍然是O(N^2)
所以你实际上并没有真正实现任何目标。