给定一个排序数组,在原数组中“删除”重复出现的数字,使得每一个元素只出现一次,而且返回“新”数组的长度。数组
不要使用额外的数组空间,必须在不使用额外空间的条件下原地完成。bash
样例 1:
输入: [] 输出: 0ui
样例 2:
输入: [1,1,2] 输出: 2 解释: 数字只出现一次的数组为: [1,2]spa
因为有序,因此相同的数字排在一块儿。code
用一个游标变量指向已经去重的部分的下一个空位,只要a[i] != a[i-1]a[i]!=a[i−1],就将a[i]填入以前的空位。cdn
遍历一次数组,将不重复元素保留,重复元素被覆盖,最后删除末尾剩余的元素便可。blog
public class Solution {
public int removeDuplicates(int[] A) {
if (A == null || A.length == 0) {
return 0;
}
int size = 0;
for (int i = 0; i < A.length; i++) {
if (A[i] != A[size]) {
A[++size] = A[i];
}
}
return size + 1;
}
}复制代码
点击LintCode进行在线评测排序