Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.
Find all the elements of [1, n ] inclusive that do not appear in this array.
Could you do it without extra space and in O(n ) runtime? You may assume the returned list does not count as extra space.
Example:
Input: [4,3,2,7,8,2,3,1] Output: [5,6]
public class Solution {
public List<Integer> findDisappearedNumbers(int[] nums) {
List res = new ArrayList();
int size = 0;
for(int i=0;i<nums.length;i++){
if(nums[i]>size){
size = nums[i];
}
}
if(nums.length > size){
size = nums.length;
}
int[] arr = new int[size+1];
for(int i=0;i<nums.length;i++){
arr[nums[i]]++;
}
for(int i=1;i<arr.length;i++){
if(arr[i] ==0){
res.add(i);
}
}
return res;
}
}
This site Original article All followed" Attribution—NonCommercial—ShareAlike 4.0 (CC BY-NC-SA 4.0) ”。 Please keep the following marks for sharing and interpretation:
Original author: Jake Tao Source: 「LeetCode – 448. Find All Numbers Disappeared in an Array」
Post a reply