企业面试真题--012

给定一个排好序的数组,在不创建额外数组的情况下, 对数组进行去重操作.

并返回新数组的长度

var a = [1,1,1,2,3,3,4,5,5,7,8,8];
//题目中最重要的信息是数组有序,则重复的元素一定是连续出现的
function arrUni(arr){
    var index = 0; //设定一个指针,从0开始

    for(var i=index+1; i<arr.length; i++){ //从第2个开始遍历数组
        //若元素与index元素不一致,则表示遍历到了新的元素
        if(arr[i] != arr[index]){
            //index指针向前移动1格
            index++;
            //把遍历的新元素直接覆盖index的位置
            arr[index] = arr[i];
        }
    }
    //此时数组的形状为 [1,2,3,4,5,7,8,5,5,7,8,8]
    //此时index==6
    //我们只需要将index后面的内容扔掉即可
    arr.length = index+1;
    return arr.length;
}
arrUni(a)

文章转载自知乎: 千锋HTML5学院
 原文链接:企业面试真题--012

猜你喜欢

转载自blog.csdn.net/sdasadasds/article/details/107414469