用java写出在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
时间: 2024-04-16 16:28:09 浏览: 53
Java如何找出数组中重复的数字
你可以使用哈希表来解决这个问题。遍历数组,将每个数字作为键存入哈希表中,如果发现当前数字已经存在于哈希表中,则找到了重复的数字。以下是用Java实现的示例代码:
```java
import java.util.HashMap;
public class Solution {
public int findDuplicate(int[] nums) {
HashMap<Integer, Integer> map = new HashMap<>();
for (int num : nums) {
if (map.containsKey(num)) {
return num;
}
map.put(num, 1);
}
return -1; // 如果数组中没有重复数字,则返回-1
}
}
```
在上述代码中,我们使用了一个HashMap来存储遍历过的数字。如果发现某个数字已经存在于HashMap中,则说明找到了重复的数字,直接返回即可。如果遍历完整个数组都没有找到重复的数字,则返回-1。
请注意,这个算法的时间复杂度为O(n),空间复杂度为O(n)。
阅读全文