题目
集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。
给定一个数组 nums 代表了集合 S 发生错误后的结果。
请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。
分析
- 数组 =》 迭代
- 重复的 和丢失的=》 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
**