给出一个整数数组,数组中有的数字出现一次,有的出现多次,请用最快的方法找出只出现一次的数字的索引值。
时间: 2024-03-10 17:47:08 浏览: 23
如果一个整数数组中只有一个数字出现一次,其余数字都出现了两次,那么可以使用异或操作来找出这个数字。
具体来说,将数组中所有数字进行异或操作,最后得到的结果就是只出现一次的数字。因为两个相同的数字异或的结果为0,所以出现两次的数字都被抵消了,只有只出现一次的数字剩余了下来。
代码如下:
```java
public static int findSingleNumber(int[] nums) {
int result = 0;
for (int num : nums) {
result ^= num;
}
return result;
}
```
如果一个整数数组中有多个数字出现一次,那么可以使用HashMap来统计每个数字出现的次数,然后再遍历一遍数组找到只出现一次的数字的索引值。
代码如下:
```java
public static int findSingleNumber(int[] nums) {
Map<Integer, Integer> map = new HashMap<>();
for (int num : nums) {
map.put(num, map.getOrDefault(num, 0) + 1);
}
for (int i = 0; i < nums.length; i++) {
if (map.get(nums[i]) == 1) {
return i;
}
}
return -1; // 没有找到只出现一次的数字
}
```
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_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)