您将获得一个非空的整数列表。对于此任务,您应该返回一个列表,该列表仅包含此列表中的非唯一元素。为此,您需要删除所有唯一元素(仅包含在给定列表中的元素一次)。解决此任务时,请勿更改列表的顺序。示例:[1, 2, 3, 1, 3]
1和3个非唯一元素,结果为[1, 3, 1, 3]
。
function nonUniqueElements(data) {
var array = [];
for (var i = 0; i < data.length; i++) {
while (i >= 2) {
array.push(i);
}
return data;
}
}
答案 0 :(得分:1)
然后再次循环遍历数组并推送到新数组 数字,仅当当前数字在地图中显示大于1时。 总时间为O(n)。
function nonUniqueElements(data) {
//first loop over the array and find all duplications
//create a map with all the numbers
//the key will be the number,
//and the value will be how much each number appears in the array
var map = {};
for (var i=0; i < data.length; i++){
if (map[data[i]] == undefined){
//the number does not exist in the map, than push to map
map[data[i]] = 0;
} else {//the number alredy exists
//increase the counter
map[data[i]] = map[data[i]] +1;
}
}
//now, loop over the array once again
var nonUniqueArray = [];
for (var i=0; i < data.length; i++){
//if the value of the current element is more than 1
if (map[data[i]] > 0){
//push to the new nonUniqueArray
nonUniqueArray.push(data[i]);
}
}
//return the non unique array
return nonUniqueArray;
}
希望有所帮助
答案 1 :(得分:0)
使用嵌套for循环遍历同一数组的循环,在本例中为数据。
首先检查每个循环的索引是否相同。如果它什么都不做。如果它们不相同则检查值。如果值相等则推送到数组。