数组中重复的数据
一、LeetCode题解
瞧一瞧~
- 博健的LeetCode题解:Gitbook版本传送门
- 博健的LeetCode题解:CSDN传送门
- 前端进阶笔记:Gitbook传送门
二、算法题
题目
给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。
找到所有出现两次的元素。
你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?
**输入**: [4,3,2,7,8,2,3,1]
**输出:** [2,3]
解法一(循环查找)
- 时间负责度 O(n^2)
- 考虑进行优化
var findDuplicates = function(nums) {
let arr = [];
nums.map((item, index) => {
if (nums.indexOf(item) !== index) {
arr.push(item)
}
});
return arr
};
解法二(map)
var findDuplicates = function(nums) {
var obj = {}
var arr = []
nums.forEach(item => {
if(obj[item]){
arr.push(item)
}else{
obj[item] = 1
}
});
return arr
};