1.题目描述
2.题解
运用双指针法,指针 i 和 j 其中 i 往往指向着需要被覆盖的元素,而 j 则不断寻找新的不重复的元素。
3.代码示例
class Solution {
public int removeDuplicates(int[] nums) {
int i=0;//第一个指针
for(int j=1;j<nums.length;){
if(nums[j]==nums[i])
j++;
else
nums[++i]=nums[j++];//覆盖操作
}
//当遍历完整个数组时i所指向的就是最后一个元素
return i+1;
}
}
4.问题总结
因为i指向的是需要被覆盖的元素,那么当循环结束时,i所指向的就是最后一个元素,则返回长度为i+1。