给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
核心算法:双指针方法,从第1个开始和第0个比较是否相同,若第1个与第0个相同,则往后移动,若第2个与第0个不同,则将第2个元素向前移动,覆盖第1个与第0个相同的元素,后面的以此类推!
package com.leetCode;
public class deleteRepeat {
public static void main(String[] args){
int[] nums={1,1,2,2,3,3};
int l=remove(nums);
for (int i =0;i<l;i++) {
System.out.print(nums[i]);
}
}
public static int remove(int[] nums){
if(nums.length==0) return 0;
int i=0;
for(int j=1;j<nums.length;j++)
{
if(nums[j]!=nums[i]){
i++;
nums[i]=nums[j];
}
}
return i+1;
}
}