给定一个非空整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。要求使用哈希表,并且用java实现
时间: 2023-12-05 16:10:46 浏览: 72
以下是使用哈希表来解决这个问题的Java代码:
```java
import java.util.HashMap;
public class Solution {
public int singleNumber(int[] nums) {
HashMap<Integer, Integer> map = new HashMap<>();
for(int i=0; i<nums.length; i++) {
if(map.containsKey(nums[i])) {
map.put(nums[i], map.get(nums[i])+1);
} else {
map.put(nums[i], 1);
}
}
for(int i=0; i<nums.length; i++) {
if(map.get(nums[i]) == 1) {
return nums[i];
}
}
return -1; // 如果没有找到只出现一次的元素,则返回-1
}
}
```
解释:
首先,我们创建一个HashMap对象,用于存储每个数字出现的次数。然后,我们遍历整个数组,对于数组中的每个数字,我们都在HashMap中查找是否已经存在。如果已经存在,则将该数字的出现次数加1,否则将该数字添加到HashMap中,并将其出现次数设置为1。
接着,我们再次遍历整个数组,并在HashMap中查找每个数字的出现次数。如果某个数字的出现次数为1,则说明它是只出现一次的元素,我们将其返回即可。
这个算法的时间复杂度为O(n),其中n为数组中元素的个数。由于我们使用了HashMap来存储每个数字出现的次数,因此空间复杂度为O(n)。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)