问题描述:给一个排好序的数组,要把该数组中所有重复的值删除,并返回删除之后的数组长度。
解决:使用双指针来处理,其中一个指针用来遍历。另一个指针用来处理元素。在这个题里,当出现重复元素时,遍历指针往后走,元素不重复时,保存。
/*
* 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;
}
}
本文介绍了一种使用双指针技术去除已排序数组中重复元素的方法,通过一个遍历指针和一个处理指针,有效地实现了原地修改,确保每个元素只出现一次,并返回新的有效长度。


被折叠的 条评论
为什么被折叠?



