去重算法用的情况比较多,自己就想做个记录,也方便以后自己看。
算法是参照别人的,这里现附上 原地址:http://alex-yang-xiansoftware-com.iteye.com/blog/2007307
自己是用js进行实现的,不过主体不变,前两个是去除重复,
第三个是去除重复本身(有碰到过需要这种情况的,自己写了个,感觉实现不是很好,轻喷】):
var list=[1,1,1,1,2,4,6,6,6,1,1,6];
//用前两个去除会得到[1,2,4,6]
//用第三个会得到[2,4]
/**
* 去重算法(不去除重复本身)
* @param list
* @returns {Array}
*/
var removeRepeat=function (list) {
var flag=false;
var num=1;
for(var i=1;i<list.length;i++){
for(var j=0;j<num;j++){
if(list[i]==list[j]){
flag=true;
}
}
if(!flag){
list[num]=list[i];
num++;
}
flag=false;
}
return list.slice(0,num);
}
/**
* 去重算法(不去除重复本身)
* @param list
* @returns {Array}
*/
var removeRepeatChange_1=function (list) {
var flag=false;
var result=[];
for(var i=0;i<list.length;i++){
for(var j=i+1;j<list.length;j++){
if(list[i]==list[j]){
flag=true;
break;
}
}
if(!flag){
result.push(list[i]);
}
flag=false;
}
return result;
}
/**
* 去重去除重复本身
* @param list
* @returns {Array}
*/
var removeRepeatChange_2=function (list) {
debugger
var flagList=[];
var result=[];
for(var i=0;i<list.length;i++){
flagList.push(true);
}
for(var i=0;i<list.length;i++){
for(var j=i+1;j<list.length;j++){
if(list[i]==list[j]){
flagList[i]=false;
flagList[j]=false;
break;
}
}
if(flagList[i]){
result.push(list[i]);
}
}
return result;
}