美文网首页
去重算法_搬运

去重算法_搬运

作者: 依然还是或者其他 | 来源:发表于2017-12-27 23:31 被阅读0次

去重算法用的情况比较多,自己就想做个记录,也方便以后自己看。
算法是参照别人的,这里现附上 原地址: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;
}

相关文章

网友评论

      本文标题:去重算法_搬运

      本文链接:https://www.haomeiwen.com/subject/ingpgxtx.html