题目要求:
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
分析:有序数组中相同元素肯定在连续空间上,可以将第一个元素看作非重复的有序表,之后依次判断后面的元素是否与前面的非重复有序表的最后一个元素相同,如果相同则继续向后判断,如果不同则插入到非重复有序表的最后。
c++:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int i,j;
if(nums.size()==0)
return 0;
else{
for(i=0,j=1;j<nums.size();j++)
{
if(nums[i]!=nums[j])
nums[++i]=nums[j];
}
}
return i+1;
}
};