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