数组中重复的数字java
时间: 2024-01-14 18:07:12 浏览: 32
你好,关于数组中重复的数字的问题,可以使用哈希表或者排序的方法来解决。以下是使用哈希表的Java代码示例:
```java
public static int findDuplicate(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int num : nums) {
if (set.contains(num)) {
return num;
}
set.add(num);
}
return -1; // 如果没有重复数字,返回-1
}
```
如果使用排序的方法,可以先将数组排序,然后遍历一遍数组,找出相邻两个数相等的情况即可。这样的时间复杂度为O(nlogn),比哈希表的方法稍微慢一些。如果数组中有且仅有一个重复数字,可以使用二分查找的方法,在O(nlogn)的时间内找到重复数字。
相关问题
java中找出数组中第一个重复的数字。
可以使用哈希表(Hash Table)来解决该问题,具体步骤如下:
1. 创建一个哈希表(HashMap)用于存储数组中的数字,初始为空。
2. 遍历数组中的每个数字,对于每个数字,如果该数字不在哈希表中,则将该数字作为键,值为 true 存入哈希表中;如果该数字已经在哈希表中,则说明该数字是数组中的重复数字,直接返回该数字即可。
3. 如果遍历完数组后仍然没有找到重复数字,则返回 -1。
以下是 Java 代码实现:
```java
public static int findDuplicate(int[] nums) {
Map<Integer, Boolean> map = new HashMap<>();
for (int num : nums) {
if (map.containsKey(num)) {
return num;
} else {
map.put(num, true);
}
}
return -1;
}
```
Java代码找出两个数组里面重复的数字
可以用双重循环遍历两个数组,对每个元素都在另一个数组中查找是否存在相同的值。具体实现可以参考以下代码:
```java
public static void findDuplicate(int[] arr1, int[] arr2) {
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr2.length; j++) {
if (arr1[i] == arr2[j]) {
System.out.println(arr1[i] + " is duplicate.");
}
}
}
}
```
调用该方法时,把两个数组传入即可:
```java
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {3, 6, 7, 1, 0};
findDuplicate(arr1, arr2); // Output: 1, 3
```
该方法的时间复杂度是 O(n^2),如果数组很大,效率可能会比较低,可以考虑其他算法优化。