用 Java 找出数组中的重复数字
时间: 2024-12-27 18:32:57 浏览: 4
在 Java 中,找出数组中的重复数字可以使用多种方法,比如哈希集合、双指针技巧等。以下是两种常见的解决方案:
1. **使用 HashSet**:
首先,你可以创建一个 HashSet 来存储数组中的元素,HashSet 只允许添加不重复的元素。遍历数组,如果元素不在 HashSet 中,就添加;如果已经在 HashSet 中,说明这个元素是重复的。
```java
import java.util.HashSet;
public int[] findDuplicates(int[] nums) {
HashSet<Integer> set = new HashSet<>();
for (int num : nums) {
if (!set.add(num)) {
return new int[]{num};
}
}
return new int[0]; // 如果没有重复,返回空数组
}
```
2. **双指针法**:
这种方法利用两个指针,一个从头开始,一个从尾部开始,依次比较它们指向的数。如果前面的数大于后面的数,交换并继续移动较大的指针;反之,如果相等,则找到了一个重复的数字,记录下来并移动较小的那个指针。这样能减少循环次数。
```java
public int[] findDuplicates(int[] nums) {
int[] result = new int[0];
for (int i = 0, j = nums.length - 1; i < j; ) {
if (nums[i] != nums[j]) {
i++;
} else {
result = Arrays.copyOf(result, result.length + 1);
result[result.length - 1] = nums[i];
i++;
j--;
}
}
return result;
}
```
阅读全文