题目:
思路:
双指针法,一个用作推动比较去重的过程,作为快指针,一个用作去重之后数组的新索引,作为慢指针。
以数组[1,1,2,2,3]为例,
代码:
class Solution {
public int removeDuplicates(int[] nums) {
if(nums == null || nums.length == 0){
return 0;
}
int count = 0;
int j = 0;
for(int i = 1; i < nums.length; i++){
if(nums[i] != nums[j]){
j++;
nums[j] = nums[i];
}else{
count++;
}
}
return nums.length - count;
}
}
结果:
代码(C语言):
int removeDuplicates(int* nums, int numsSize){
if(numsSize == 0){
return 0;
}
int count = 1;
for(int i = 1; i < numsSize;i++){
if(nums[i-1] == nums[i]){
continue;
}else{
nums[count] = nums[i];
count++;
}
}
return count;
}
结果: