跳到主要内容

448.找到所有数组中消失的数字

链接:448.找到所有数组中消失的数字
难度:Easy
标签:数组、哈希表
简介:给定一个范围在   1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。

题解 1 - typescript

  • 编辑时间:2021-02-13
  • 执行用时:152ms
  • 内存消耗:50.7MB
  • 编程语言:typescript
  • 解法介绍:利用 set 储存。
function findDisappearedNumbers(nums: number[]): number[] {
const set = new Set(nums);
const ans: number[] = [];
for (let i = 1, l = nums.length; i <= l; i++) {
if (!set.has(i)) ans.push(i);
}
return ans;
}

题解 2 - typescript

  • 编辑时间:2021-02-13
  • 执行用时:116ms
  • 内存消耗:46.4MB
  • 编程语言:typescript
  • 解法介绍:[参考链接](https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array/solution/zhao-dao-suo-you-shu-zu-zhong-xiao-shi-d-mabl/)。
function findDisappearedNumbers(nums: number[]): number[] {
const n = nums.length;
nums.forEach(v => (nums[(v - 1) % n] += n));
const ret: number[] = [];
nums.forEach((v, i) => v <= n && ret.push(i + 1));
return ret;
}