解题思路
双指针法:不是真的定义两个变量,是借用思想;第一个指针指向一个元素;另一个指针指向另一个元素;
知识点
- 数组元素的调用;
- vector 库函数的调用:方法和属性;
解法一:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.size()==0) return 0;
int i=0; //i做指针,记录需要替换元素的位置
for(int k=1;k<nums.size();k++)
{
if(nums[k]!=nums[i])
nums[++i]=nums[k];
}
return i+1;
}
};
解法二:本质相同
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.size()==0) return 0;
int i=0;
for(int j=1;j<nums.size();j++)
{
if(nums[j]!=nums[i])
{
i++;
nums[i]=nums[j];
}
}
return i+1;
}
};
小结
除了知识点总结之外还有解法思想总结