我们如何在数组中找到具有以下限制的重复元素:
不使用额外内存
可以使用变量来存储数据,而不是像HashMap / HashSet和 所有
时间复杂度可以是O(n),不应该是O(n ^ 2)
注意:
这里的数组是动态整数数组。
答案 0 :(得分:1)
如果数组的所有元素都在[0,n]之间,那么我们可以通过以下方式完成
对于每个元素a [i],假设
如果a [i]> = 0,则 x = a [i]
如果a [i]
答案 1 :(得分:0)
以下是我对上述问题的解决方案。
public static boolean checkDuplicates(int[] arr, int length) {
int value = 0;
boolean isDupFound = false;
for (int i = 0; i < length; i++) {
int currChar = arr[i];
int bit_Position = currChar - 'a';
if ((value & (1 << bit_Position)) > 0) {
isDupFound = true;
break;
} else {
value = value | (1 << bit_Position);
}
}
return isDupFound;
}