题目如下:
解题思路:
遍历数组,跳过重复元素,设置一个计数器 flag 记录非重复元素。注意处理数组访问的边界情况。
代码如下:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int length = nums.size();
if(length == 0) //数组为空直接返回
return 0;
int flag = 0; //计数器,记录非重复元素
for(int i = 1; i < length; i++){
//跳过重复元素
while(nums[i] == nums[flag]){
if(i < length - 1) //数组边界情况处理,避免数组访问越界
i++;
else //最后几位元素全部相同,避免数组越界,例如{1、1、1、1}
break;
}
//记录非重复元素
if(nums[i] != nums[flag]){ //判断是为了例如{1、1、1、1}等最后几位元素相同情况的特殊处理
flag++;
nums[flag] = nums[i];
}
}
return (flag + 1);
}
};