解答:
/**
* 解题思路是使用快慢指针来记录遍历的坐标,
最开始时两个指针都指向第一个数字,
如果两个指针指的数字相同,则快指针向前走一步,
如果不同,则两个指针都向前走一步,
这样当快指针走完整个数组后,
慢指针当前的坐标加1就是数组中不同数字的个数
*
* @param nums
* @return
*/
public static int removeDuplicates(int[] nums) {
//j:慢指针 ,i:快指针
int len = nums.length;
int j = 0;
for (int i = 0; i < len; i++) {
if (nums[j] != nums[i]) {
nums[++j] = nums[i];
}
}
/*
int newlen = j + 1;
for (int i = 0; i < newlen; i++) {
System.out.println(nums[i]);
}
*/
return j + 1;
}
public static int removeDuplication(int[] nums) {
//pre:慢指针, cur:快指针
int pre = 0, cur = 0, n = nums.length;
while (cur < n) {
if (nums[pre] == nums[cur]) {
++cur;
} else {
nums[++pre] = nums[cur++];
}
}
/*
int newlen = pre + 1;
for (int i = 0; i < newlen; i++) {
System.out.println(nums[i]);
}
*/
return pre + 1;
}