目录
- 题目
- 思路
- 相关思考
- 代码(C++/力扣)
题目
题目来源
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
思路
按照考研时王道书里面的相关思路,利用两个变量i、j,分别表示处理元素和目前已有的元素个数(也可以是位置)
相关思考
一开始一直尝试使用count计数,然后用i+count的方法赋值,但是会出现i+count超出数组范围的情况。
代码(C++/力扣)
int removeDuplicates(vector<int>& nums) {
if (nums.size() < 2) return nums.size();
int j = 0;
for (int i = 1; i < nums.size(); i++)
if (nums[j] != nums[i]) nums[++j] = nums[i];
return ++j;
}