给定一个数组,现在要求其同一元素值出现的次数不要超过两次,超过两次就删除。如给定arr=[1,2,1,2,1,3,2],则按要求得到的结果为[1,2,1,2,3]。
1.思路:
先判断数组arr里同一元素值出现的次数,如果没超过两次,就放入stack栈中。
为了判断不同元素值各自出现的次数,用一个数组count[ ]来记录同一元素值出现的次数,其索引号为数组arr的元素值,如:用count[1]来记录arr里1出现的次数,如果count[1]小于2,就把1放入stack栈中。
2.JavaScript实现的代码:
<script type="text/javascript">
var arr=[1,2,1,2,1,3,2]
function findovertwo(arr){
//记录同一元素出现的次数
let count=[];
//保存结果
let stack=[];
for(let i=0;i<arr.length;i++){
if(!count[arr[i]] && count[arr[i]]!=0){
count[arr[i]]=0
}else{
count[arr[i]]++;
}
//当同一元素出现的次数<=2次时,保存进这个栈
if(count[arr[i]]<2){
stack.push(arr[i])
}
}
return stack;
}
var res=findovertwo(arr);
console.log(res)
</script>