【发布时间】:2021-03-11 04:57:15
【问题描述】:
我有一个数字数组 [1,2,2,2,3,4,5]
我想要做的是对数组进行排序以避免连续相等的数字[1,2,3,2,4,2,5]。但我不想从数组中删除任何数字,在更糟糕的情况下,当重复的数字多于其他数字时,我想将那些无法合并的数字放入其他数组中。
const original = [1,2,2,2,2,2,2,3,4];
const merged = [];
const rest = [];
例如 [1,2,2,2,2,2,2,3,4] 预期的结果应该是 [2,1,2,3,2,4,2] 和另一个数组 [2 ,2] 在原始数组中我有 6 次 2 并且我能够合并其余 6 个中的 4 个
const original = [1,2,2,2,2,2,2,3,4];
const merged = [2,1,2,3,2,4,2];
const rest = [2,2];
我试图玩这个算法,但没有办法得到尊重的结果,这个算法会删除重复项
const testArr = [1, 1, 2, 2, 3, 3, 1, 1, 1];
const compress = (arr, len = 0, canDelete = false) => {
if(len < arr.length){
if(canDelete){
arr.splice(len, 1);
len--;
}
return compress(arr, len+1, arr[len] === arr[len+1])
};
return;
};
compress(testArr);
console.log(testArr);
您知道解决此类问题的最佳方法是什么吗?
【问题讨论】:
-
我绝对不明白 2,1,2,3,2,4,2 是如何从您的源表中获得的...无论如何我希望 1 成为结果的第一个元素...
-
只有一个值是重复的吗?如果是这样 - 它更简单。
-
我觉得我有一个想法,让我努力奋斗吧
-
取最常出现的元素。如果数组长度超过一半,则需要删除一些,否则您总是可以通过简单地在不同元素之间交替来找到解决方案。
-
顺便说一句,这不是排序算法,因为你最终不会得到有序的元素。
标签: javascript node.js arrays algorithm duplicates