思路
1.双指针。
2.slow用来保存不同的数据的下标进行修改,fast用来找到不同的数据。
2.直到fast遍历到结尾即可。
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int n = nums.size();
if(n == 0){
return 0;
}
int slow , fast;
//由于第一个元素肯定不需要删除所以slow 和 fast都为1
slow = fast = 1;
//当fast 到达结尾跳出
while(fast < n){
//因为是有序数组 fast 与 fast - 1 比较即可
if(nums[fast] == nums[fast - 1]){
fast++;
}else{
nums[slow] = nums[fast];
fast++;
slow++;
//改动后fast 和 slow都要++
}
}
//slow下标即为元素的个数 因为放置完slow又进行了一次++操作
return slow ;
}
};