LeetCode – 448. Find All Numbers Disappeared in an Array

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」

Praise 136
0 0 136

Further reading

Post a reply

Log in can only be commented on later
Share this page
Back to top