题目大意:
在一个有序数组中,移除重复的元素,保证每个元素只出现一次,并且需要保持有序状态,同时返回数字k表示不相同元素的个数。
- 思路:
- 利用双指针的思想,在数组开头的位置定义两个指针,
fast
,slow
。 - 当
fast
所指元素和slow
所指元素相等的时候,slow
无任何操作,fast
继续向后移动。 - 当
fast
所指元素和slow
不相等的时候,slow
向后移动一位,并且fast
所指元素的值赋给slow,fast继续向后移动。
- 利用双指针的思想,在数组开头的位置定义两个指针,
题解
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int fast = 0, slow = 0;
while (fast < nums.size()) {
if (nums[fast] == nums[slow])
{
fast++;
}else {
nums[++slow] = nums[fast++];
}
}
return slow + 1;
}
};