参考链接
- https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
题目描述
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
解题思路
使用双指针,一个指针锁定要被替换的位置,另一个指针寻找不同的元素,放在第一个指针右边的位置。
代码
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int len = 0;
int i = 0;
int j = 0;
for (i = 0, j = i + 1; ; j ++)
{
if (j >= nums.size())
{
break;
}
if (nums[i] != nums[j])
{
nums[i + 1] = nums[j];
i ++;
}
}
len = nums.size() < i + 1 ? nums.size() : i + 1;
return len;
}
};