题目:已知一个排序int数组,删除数组中的重复的数据,使得数组中每个元素只出现一次,返回新的数组的长度
要求,不要使用额外的空间,不能new出新的空间。
思路:其实题目不是很难,数组已经是遍历好了的,所以如果出现重复的话,那么重复的数据一定是相邻的,所以,根据这个思想,我们可以遍历数组,找到当前值和下一个值是相同的,并且纪录下重复的情况,让数组的总长度,减去重复度,就是题目的要求了
public int removeDuplicates(int[] A) {
int duplicate = 0;
int Length = A.length;
int i = 0;
for (i = 0; i < A.length -1- duplicate; i++) {
if (A[i] == A[i + 1]) {
for (int j = i; j < A.length - 1-duplicate; j++) {
A[j] = A[j + 1];
}
i--;
duplicate++;
}
}
return Length - duplicate;
}
代码比较简单,不解释了。