注意:有序数组;原地删除重复出现的元素;返回删除后数组的新长度
1.顺序数组
2.原地删除即不可以通过将数组赋值给set(set不允许重复项)来简易去除重复项
3.返回数组的新长度,不要求返回新数组
方法:双指针法
int[] nums = {0,1,2,2,3,3,4}
public int removeDuplicates(int[] nums){
if(nums.length == 0){
return 0;
}
int i = 0;//在前的慢指针
for(int j = 1; j<nums.length; j++){//在后的快指针
if(nums[j] != nums[i]){//一前一后不相同时,后者赋值给前者
//一前一后相同时,后者继续往前走,前者留步
i++;//慢指针向前移动
nums[i] = nums[j];//不相同时,将快指针赋值给慢指针
}
//结果就是相同的会被忽略掉,不相同的会被重新整合
}
return i+1;//此处+1是因为i开始值为0,求长度则应该+1
}