||
### 题目
给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。
示例:
输入:[4,3,2,7,8,2,3,1]
输出:[5,6]
### 解题思路
仿多数元素解题思路写的,仍然使用通用的哈希表解题思路
### 代码
```java
class Solution { public List<Integer> findDisappearedNumbers(int[] nums) { List<Integer> list = new ArrayList<Integer>(); int n=nums.length; int datas[]=new int[n]; HashMap<Integer,Integer> map1 = new HashMap<>(); HashMap<Integer,Integer> map2 = new HashMap<>(); for(int i=1;i<=n;i++){ datas[i-1]=i; map2.put(nums[i-1],1); } for(Integer data:datas){ if(map2.containsKey(data)){ map1.put(data,1); }else{ map1.put(data,0); } } Set <Integer> keys = map1.keySet(); for(Integer key:keys) { if(map1.get(key)==0){ list.add(key); } } return list; } }
```
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-4-20 02:52
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社