1.题目2.代码实现int removeDuplicates(int* nums, int numsSize) { if (numsSize 2) { return numsSize; } int slow 2; for (int fast 2; fast numsSize; fast) { if (nums[fast] ! nums[slow - 2]) { nums[slow] nums[fast]; slow; } } return slow; }3.步骤第一步先想边界情况如果数组长度 ≤ 2不管是什么数字都直接返回原长度。因为题目允许最多出现 2 次。if (numsSize 2) { return numsSize; }第二步定义双指针slow记录有效数组的长度fast用来遍历整个数组因为前两个数字一定保留所以都从2开始。int slow 2; for (int fast 2; fast numsSize; fast) { }第三步用if来判断数组要不要保留只要当前数字 有效数组倒数第二个数字就说明这个数字可以保留。把要的数字放进去长度1返回最终有效长度。for (int fast 2; fast numsSize; fast) { if (nums[fast] ! nums[slow - 2]) { nums[slow] nums[fast]; slow; } } return slow;4.心得更深刻、熟练的学习了双指针。