给定一个排好序的数组,在不创建额外数组的情况下, 对数组进行去重操作.
并返回新数组的长度
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