LeetCode - 448. Find All Numbers Disappeared in an Array

链接

448. Find All Numbers Disappeared in an Array

题意

给定一个整型数组,其中的元素满足 1 ≤ a[i] ≤ n (n为数组大小),一些元素出现了两次,另外一些出现一次。找出数组元素在[1, n]中没有出现的数字

思路

利用数组,创建一个大小为给定数组大小+1的数组。然后遍历给定数组,让新建数组的下标为给定数组值,新建数组对应值记录为该数出现的次数。然后再次遍历数组,若数值元素值为0即代表该下标值没出现过。

代码

Java:

public class Solution {
    public List<Integer> findDisappearedNumbers(int[] nums) {
        int[] arr = new int[nums.length + 1];
        List ans = new ArrayList();
        for (int i = 0; i < nums.length; i++) {
            arr[nums[i]]++;
        }
        for (int i = 1; i <= nums.length; i++) {
            if (arr[i] == 0) {
                ans.add(i);
            }
        }
        return ans;
    }
}

效率

Your runtime beats 78.79% of java submissions

posted @ 2017-03-27 22:40  zyoung  阅读(124)  评论(0编辑  收藏  举报