目录
1.问题描述
本题出自leetcode 26删除有序数组重复项,题目说的很复杂,简单来说就是,把数组中的不同的数移动到数组的前面,并且返回不同元素的个数。比如
2.解决思路
对于此种问题,使用双指针,定义i指针指向头,i不但表示头还表示应该填充的位置和实际需要的数组的长度,用j遍历这个数组,如果nums[i]!=nums[j],说明应该用j位置的元素填充i+1位置的元素。并且i也要向前移动位置。
3.代码实现
int removeDuplicates(vector<int>& nums) {
int i=0;
for(int j=0;j<nums.size();++j)
{
if(nums[i]!=nums[j])
{
nums[++i]=nums[j];
}
}
return i+1;
}
4.总结
代码实现并不复杂,关键是能够想到双指针该如何使用。