如何用Java编程的方法,不依赖哈希表数据结构,找出数组中所有出现次数超过一次的元素?
时间: 2024-11-25 17:13:51 浏览: 11
在Java中,如果我们不使用哈希表,可以采用排序+遍历的方法来解决这个问题,不过这种方法会占用额外的空间用于排序。这里是一个示例:
```java
import java.util.Arrays;
public class DuplicateFinder {
public static int[] findDuplicates(int[] nums) {
// 将数组排序
Arrays.sort(nums);
// 初始化结果数组
int[] result = new int[nums.length];
int index = 0;
// 遍历数组,如果当前元素与下一个元素相等,则说明它重复了
for (int i = 0; i < nums.length - 1; i++) {
if (nums[i] == nums[i + 1]) {
result[index++] = nums[i]; // 添加到结果数组
}
}
// 如果最后一个元素没有重复,也添加
if (nums[nums.length - 1] != nums[0]) {
result[index++] = nums[nums.length - 1];
}
// 返回结果,注意这里的结果数组可能小于实际需要,因为它只记录了第一个重复的元素
return Arrays.copyOf(result, index);
}
public static void main(String[] args) {
int[] arr = {1, 2, 2, 3, 4, 4, 5};
int[] duplicates = findDuplicates(arr);
System.out.println("数组中的重复元素有: " + Arrays.toString(duplicates));
}
}
阅读全文