# LeetCode算法学习之- 数组-[645. 错误的集合]

66 阅读1分钟

题目

集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。

给定一个数组 nums 代表了集合 S 发生错误后的结果。

请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。

分析

  1. 数组 =》 迭代
  2. 重复的 和丢失的=》 map 统计

解法:数组统计

思想
1. 统计重复的数字
2. 迭代去除统计为0 的数字 和统计为2的数据就是答案
var findErrorNums = function (nums) {
  const res = [];
  const map = {};
  for (let i = 0; i < nums.length; i++) {
    map[nums[i]] = (map[nums[i]] || 0) + 1;
    if (map[nums[i]] > 1) {
      res.push(nums[i]);
    }
  }
  for (let i = 0; i < nums.length; i++) {
    if (!map[i + 1] ) {
      res.push(i + 1);
    }
  }
  return res;
};
//时间复杂度:O(n)
//空间复杂度:O(1)
​

总结

今天这道题是主要是练习如何求解数组类题目

大家可以看看我分享的一个专栏(前端搞算法)里面有更多关于算法的题目的分享,希望能够帮到大家,我会尽量保持每天晚上更新,如果喜欢的麻烦帮我点个赞,十分感谢

大家如果对“TS”感兴趣的可以看看我的专栏 (TypeScript常用知识),感谢大家的支持

文章内容目的在于学习讨论与分享学习算法过程中的心得体会,文中部分素材来源网络,如有侵权,请联系删除,邮箱 182450609@qq.com

**