思路
题目要求需要在原地删除重复的元素,这说明不能使用额外的空间。我们可以使用一个索引index来记录赋值的位置,以此来不断地删除重复的元素。
解题过程:
我们可以首先求得nums的长度len
若没有元素,直接返回0。
从第二个元素开始遍历,不断地与其前面的元素进行比较。
若与前面的元素相同,则跳过一次循环,不做任何处理。
若不同,则将i位置的值覆盖index位置的值,index+1。
最后返回index,即可知道nums数组的长度。
class Solution {
public:int removeDuplicates(vector<int>& nums) {int len = nums.size();if( len ==0)return 0;int index = 1;for(int i = 1 ;i < len; i++){if(nums[i] == nums[i-1]){continue;}else{nums[index] = nums[i];index++;}}return index;}
};