[leetCode]26. 删除排序数组中的重复项
解法 双指针法
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;
}
}