今天继续刷LeetCode,第26题,去掉有序表中重复的元素,不能花费额外的内存。
分析:
既然是有序表,那么就可以将第一个最为对比元素,遍历后面所有的元素,如果不相等就将该元素赋值给参考元素后一位,并令该元素为新的参考元素,相等就继续向后遍历。另外注意,最后输出的是不相等的个数,所以需要统计不相等的情况有几次。
问题:
1、容器的使用和数组的使用类似,用nums[i]可以查找到任意一个元素;
2、分析清楚题目的意思,明白输出的含义;
附上代码:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.empty())
return 0;
int n=nums.size();
if(n==1)
return 1;
int j=0;
int sum=1;
for(int i=1;i<n;i++)
{
if(nums[j]!=nums[i])
{
nums[j+1]=nums[i];
sum++;
j++;
}
}
return sum;
}
};