给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。
不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。
给出数组nums =[5,6,8,9,9,10]
,你的函数应该返回长度5,此时nums = [5,6,8,9,10]
。
用 2 个指针,一个指有效元素的长度,一个从前向后扫,跳过重复的元素,将不重复的元素依次放到数组前方,最后返回有效元素的长度即可。
public class Solution {
/**
* @param A: a array of integers
* @return : return an integer
*/
public int removeDuplicates(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
int size = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[size] != nums[i]) {
nums[++size] = nums[i];
}
}
return size + 1;
}
}