【发布时间】:2020-07-11 10:29:54
【问题描述】:
我有一个数组a = [1,1,1,2,2,3,3,3,4,4,4,6,6,6,7,7]
我想获取此数组列表中的所有重复对。
由于有 2 和 7 对,输出应该是 -
输出:[2, 7]
我尝试编写自己的逻辑,但我在这方面非常薄弱。有人可以帮忙吗?
function getDuplicateArrayElements(arr){
let sorted_arr = arr.slice().sort();
let results = [];
for (let i = 0; i < sorted_arr.length; i++) {
let matchingElementCount = 1;
for (let j = i + 1; j < sorted_arr.length - i; j++) {
if (sorted_arr[j] === sorted_arr[i]) {
++matchingElementCount;
} else {
if(matchingElementCount % 2 === 0) {
results.push(sorted_arr[i]);
}
i = j - 1;
break;
}
}
}
return results; } var a = [1,1,1,2,2,3,3,3,4,6,6,6,7,7]; var duplicateValues= getDuplicateArrayElements(a);
【问题讨论】:
-
为什么没有6?
-
计算数组中每个值的个数,然后只保留计数为2的那些。
-
@Viney 我认为这是因为 6 出现了 3 次,而不是两次
-
但是我可以有多个对,比如元素 1 重复 4 次,所以输出会有 [1,1]
-
这对必须是连续的吗?就像如果最后有一个
1,那么就会有四个1。那算两对吗?
标签: javascript node.js algorithm