从排序数组中删除重复项,给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
nums是以"引用"方式传递的.也就是说,不对实参做任何拷贝
在函数里修改输入数组对于调用者是可见的.
根据你的函数返回的长度,它会打印出数组中该长度范围内的所有元素
思路:根据题目的描述,我们不能使用第二个数组进行操作,只能将数组中的元素向前移动.
第一步:比较数组中元素跟前一个元素是否相同
第二步:如果相同,就将角标加一,在进行第一步的比较
第三步:如果不相同.就将该元素向前移动到跟你比较的元素的位置.
public class RemoveDuplicates {
public int removeDuplicates(int[] nums) {
int index = 1;
for(int i = 0; i < nums.length; i++) {
int a = nums[i];
if(a!=nums[index-1]) nums[index++] = a;
}
return index;
}
public static void main(String[] args) {
int[] nums = {0,0,1,1,1,2,2,3,3,4};
RemoveDuplicates rd = new RemoveDuplicates();
int len = rd.removeDuplicates(nums);
for(int i = 0; i < len; i++) {
System.out.print(nums[i]+" ");
}
}
}
网友评论