- leetcode删除排序数组中的重复项题目描述
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 - 解题思路
由于是已经排好序的数组,因此只需从头到尾遍历数组,并增加一个变量l记录不相等的数的个数,如果当前位置i与后一个位置i+1数字不相等,则令l加1,并将l处的值改为i+1处的值即可。 - c++代码实现
int removeDuplicates(vector<int>& nums) {
int l=0,len=nums.size();
if(len<2) return len;
for(int i=0;i<len-1;++i)
{
if(nums[i]!=nums[i+1]){
l++;nums[l]=nums[i+1];
}
}
return l+1;
}