从一个数组中查找到不重复的元素,我总结了三种方法
方法一:使用异或运算
异或运算有一个重要的性质:任何数与自身异或结果为 0,任何数与 0 异或结果为其本身。
因此,数组中所有元素进行异或运算,成对出现的元素会被抵消掉,最终剩下的就是那个不重复的元素
public static void main(String[] args) {
int[] array = {1, 1, 2, 2, 3, 3, 4, 5, 5};
int uniqueElement = findUniqueElement(array);
System.out.println("不重复的元素是: " + uniqueElement); // 输出: 4
}
public static int findUniqueElement(int[] array) {
int unique = 0;
for (int num : array) {
unique ^= num;
}
return unique;
}
方法二:使用双层for循环
public static void main(String[] args) {
int[] array = {1, 1, 2, 2, 3, 3, 4, 5, 5};
int uniqueElement = findUniqueElement(array);
System.out.println("不重复的元素是: " + uniqueElement); // 输出: 4
}
public static int findUniqueElement(int[] array) {
int max = Arrays.stream(array).max().orElseThrow(() -> new IllegalArgumentException("数组为空"));
int[] count = new int[max + 1];
// 统计每个元素出现的次数
for (int num : array) {
count[num]++;
}
// 找到出现次数为 1 的元素
for (int num : array) {
if (count[num] == 1) {
return num;
}
}
throw new IllegalArgumentException("没有找到不重复的元素");
}