1 题目
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
2 思路
此题要利用快慢针的思想, 通过遍历快针, 如果发现快针跟前一个元素不同, 那么说明唯一元素的数量+1, 然后把这个唯一元素放到写到数组慢针的位置, 也就实现了把数组中所有唯一元素都放到了前面.
3 代码
int removeDuplicates(vector<int>& nums) {int nums_size = nums.size();if(nums_size < 2)return nums_size;int fast = 1;int slow = 1;while (fast < nums_size) {if (nums[fast] != nums[fast - 1]) {if (fast > slow)nums[slow] = nums[fast];slow ++;}fast ++;}return slow;
}