力扣题库之删除数组重复项
-
题目 : 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
-
其实看了测试用例才发现,这道题知识让我们将不重复数组想排列到前面,并输出不重复的项的个数,在不重新开辟内存空间的情况下,想要删除重复数据几乎是不可能的(至少我不会)。读懂题意之后就可以开始编写代码了,如下:
//注意 : 这里所要求的都是有序数组
var removeDuplicates = function(nums) {
var j = 0;
for(let i = 1;i< nums.length ;i++){
//当相邻两项不相等时,将值赋值给num[j]
if(nums[i]!=nums[i-1]){
j++;
nums[j] = nums[i];
// console.log(nums)
}
}
return j+1;
}
//第一轮 : [0, 1, 1, 1, 1, 2, 2, 3, 3, 4]
//第二轮 : [0, 1, 2, 1, 1, 2, 2, 3, 3, 4]
//第三轮 : [0, 1, 2, 3, 1, 2, 2, 3, 3, 4]
//第四轮 : [0, 1, 2, 3, 4, 2, 2, 3, 3, 4]
console.log(removeDuplicates([0,0,1,1,1,2,2,3,3,4]))