代码实现:
方法一:双指针
int removeDuplicates(int *nums, int numsSize) {int l = 0, r = 0;while (r < numsSize) {if (r > 1 && nums[r] == nums[l - 1] && nums[r] == nums[l - 2]) {r++;} else {nums[l] = nums[r];l++;r++;}}return l; }
方法二:暴力法——不去重
int removeDuplicates(int *nums, int numsSize) {for (int i = 2; i < numsSize; i++) {if (nums[i] == nums[i - 1] && nums[i] == nums[i - 2]) {for (int j = i; j < numsSize - 1; j++) {nums[j] = nums[j + 1];}i--;numsSize--;}}return numsSize; }
方法三:暴力法——去重
int removeDuplicates(int *nums, int numsSize) {int i, j, k;for (i = 2; i < numsSize; i++) {if (nums[i] == nums[i - 1] && nums[i] == nums[i - 2]) {for (j = i; j < numsSize; j++) {if (nums[j] != nums[j - 1]) {break;}}int n = j - i;for (k = i; k < numsSize - n; k++) {nums[k] = nums[k + n];}numsSize -= n;}}return numsSize; }