题目分析:
- 给定一个有序序列,要求去除序列中的重复元素,得到一个序列,序列中每个元素只出现一次。要求禁止使用额外数组空间,只能使用静态空间。
解题思路:
一遍遍历实现
使用双指针实现,一个指向当前遍历元素的位置,一个指向不重复元素应该存放的位置。
进行一遍遍历指针即可实现。
实现程序
int removeDuplicates(int* nums, int numsSize) { if (numsSize == 0) return 0; int num = 0; // 记录无重复序列的数目 for (int i = 1; i < numsSize; i++) // 遍历搜描 { if (nums[num] != nums[i]) // 不重复,则将次元素放在无重复序列的后面 { nums[++num] = nums[i]; } } return num + 1; // 返回最终序列长度 }