问题描述:给一个排好序的数组,要把该数组中所有重复的值删除,并返回删除之后的数组长度。
解决:使用双指针来处理,其中一个指针用来遍历。另一个指针用来处理元素。在这个题里,当出现重复元素时,遍历指针往后走,元素不重复时,保存。
/*
* Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.
Do not allocate extra space for another array, you must do this in place with constant memory.
For example,
Given input array nums = [1,1,2],
Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively. It doesn't matter what you leave beyond the new length.
*/
public class RemoveDuplicates {
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;
}
}