在这里插入代码片
## 给定一个排序数组,需要在原地删除重复的元素,并返回移除后数组的新长度。
- 知识点总结
- 分析问题
-我们可以使用三个vecter向量
iter1:用来迭代整个nums数组,遍历完整个数组
iter2:用来比较从iter2->iter3(不包含iter3)中是否存在重复元素
iter3:用来建立有效数组的索引。
using namespace std class Solution{ public: int removeDuplicates(vector<int>& nums){ std::vector<int>::iterator iter1,iter2,iter3=nums.begin(); } }
用c++里面的内置函数
在这里插入代码片
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
//sort(nums.begin(), nums.end());
nums.erase(unique(nums.begin(), nums.end()), nums.end());
return nums.size();
}
};
双指针法
在这里插入代码片
public int removeDuplicates(int[] nums) {
if (nums.length == 0) return 0;
int i = 0;
for (int j = 1; j < nums.length; j++) {
if (nums[j] != nums[i]) {
i++;
nums[i] = nums[j];
}
}
return i + 1;
}