java找到所有数组中消失的数字_找到所有数组中消失的数字
时间: 2024-02-01 09:16:47 浏览: 23
可以使用哈希表或原地修改数组的方式来找到所有数组中消失的数字。
以下是使用哈希表的方法:
1. 创建一个哈希表,用于记录每个数字出现的次数。
2. 遍历数组,将每个数字出现的次数记录在哈希表中。
3. 遍历哈希表,找到值为0的键,这些键对应的数字就是消失的数字。
以下是原地修改数组的方法:
1. 遍历数组,将每个数字对应的下标处的数字取相反数。
2. 再次遍历数组,找到值为正数的数字,这些数字对应的下标就是消失的数字。
下面是使用哈希表的Java代码实现:
```java
public List<Integer> findDisappearedNumbers(int[] nums) {
List<Integer> res = new ArrayList<>();
Map<Integer, Integer> map = new HashMap<>();
for (int num : nums) {
map.put(num, map.getOrDefault(num, 0) + 1);
}
for (int i = 1; i <= nums.length; i++) {
if (!map.containsKey(i)) {
res.add(i);
}
}
return res;
}
```
下面是原地修改数组的Java代码实现:
```java
public List<Integer> findDisappearedNumbers(int[] nums) {
List<Integer> res = new ArrayList<>();
for (int i = 0; i < nums.length; i++) {
int index = Math.abs(nums[i]) - 1;
if (nums[index] > 0) {
nums[index] = -nums[index];
}
}
for (int i = 0; i < nums.length; i++) {
if (nums[i] > 0) {
res.add(i + 1);
}
}
return res;
}
```