java删除无序数组中的重复项并且时间复杂度为n
时间: 2024-09-20 14:11:38 浏览: 38
在 Java 中,如果你想删除无序数组中的重复项并保持 O(n) 的时间复杂度,你可以使用哈希集合(HashSet 或者 TreeSet),因为它们的插入操作时间复杂度为 O(1),查找也很快。以下是使用 HashSet 的示例:
```java
import java.util.HashSet;
public class RemoveDuplicates {
public static int[] removeDuplicates(int[] nums) {
if (nums == null || nums.length == 0) {
return nums;
}
// 使用HashSet保存唯一的元素
HashSet<Integer> set = new HashSet<>();
for (int num : nums) {
set.add(num);
}
// 将HashSet转换回数组,自动去除重复
int[] result = new int[set.size()];
int i = 0;
for (Integer num : set) {
result[i++] = num;
}
return result;
}
public static void main(String[] args) {
int[] nums = {1, 2, 2, 3, 4, 4, 5};
int[] uniqueNums = removeDuplicates(nums);
for (int num : uniqueNums) {
System.out.print(num + " ");
}
}
}
```
在这个例子中,遍历数组并将每个元素添加到 HashSet 中,由于 HashSet 不允许重复,所以会自动过滤掉重复项。最后将 HashSet 转换为数组作为结果。
阅读全文