
解法 双指针法
i为慢指针,j为快指针,一开始i指向第一个数组元素,j指向第2个数组元素,如果i与j指向的元素相等就移动j指针跳过相同元素,如果跳过重复元素结束(nums[j]!=nums[i])就令i+1指向的元素等于j指向的元素。最后返回数组的长度i+1。
class Solution {
public int removeDuplicates(int[] nums) {
int i = 0;//慢指针
//j为快指针,用于跳过重复项
for(int j = 1; j < nums.length; j++){
if(nums[j]!=nums[i]){//跳过重复项结束
nums[++i] = nums[j];//对i指针后一个位置赋值
}
}
return i+1;
}
}