快慢指针法
- 指针设置:
- fast 指针指向需要迭代遍历的数组,从第二个元素开始比较;
- slow 指针是存放去重后数据;
- 思路:
- 比较数据,如果不相等,slow 指针向前移动,并将 fast 指针指向数据搬移过来;
- 搬移赋值情况:
- 如果没有重复数据时,slow 与 fast 相邻;
- 如果之前出现过重复数据,slow 与 fast 之间形成距离;
- 边界情况:
- 空数组情况;
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if (nums.empty()) {
return 0;
}
int slow = 0;
for (int fast = 1; fast < nums.size(); fast++) {
if (nums[slow] != nums[fast]) {
slow++;
nums[slow] = nums[fast];
}
}
return slow + 1;
}
};