删除重复元素
给你一个有序数组 nums
,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝
int len = removeDuplicates(nums); // 在函数里修改输入数组对于调用者是可见的。 // 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。 for (int i = 0; i < len; i++) { print(nums[i]); }
使用双指针的方式解:
1 class Solution { 2 public: 3 int removeDuplicates(vector<int>& nums) { 4 int n = nums.size(); 5 if (n == 0) { 6 return 0; 7 } 8 int fast = 1, slow = 1; 9 while (fast < n) { 10 if (nums[fast] != nums[fast - 1]) { 11 nums[slow] = nums[fast]; 12 ++slow; 13 } 14 ++fast; 15 } 16 return slow; 17 } 18 };
本文来自博客园,作者:坤k,转载请注明原文链接:https://www.cnblogs.com/fukunwang/p/15707903.html