一、双指针算法:
i从0开始,j从1开始:原地求出数组中不重复元素的个数,返回不重复元素的个数
代码如下(示例):
public static int doublenode(int[] nums) {
int i=0;//慢指针,并用来记录不重复元素的个数
int j=1;//快指针
int n= nums.length;
for(j=1;j<n;j++) {//从快指针开始循环
if(nums[i]!=nums[j]) {//如果慢指针所指个数不等于快指针
i++;//表明两元素不重复,
nums[i]=nums[j];//如果两元素重复,i值不增加,那么
//nums[i]的移动要靠由nums[j]赋值来实现
}
}
return i;
}
总结
提示:利用快慢指针可以解决原地统计的问题,不利于set就可以完成任务,而且空间复杂度了o(1),时间复杂度为O(n).