删除排序数组中的重复项
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
LeetCode
方法一
public int removeDuplicates(int[] nums) {
if(nums == null || nums.length == 0){
return 0;
}
//定义计算重复的数
int count = 0;
for(int right = 1;right < nums.length;right++){
if(nums[right] == nums[right-1]){
count++;
}else{
//赋值给新数组
nums[right-count] = nums[right];
}
}
return nums.length - count;
}
方法二
public void removeDuplicates(int[] nums) {
if (nums == null || nums.length == 0) {
// return 0;
System.out.println(0);
}
int left = 0;
for (int right = 1; right < nums.length; right++)
//如果左指针和右指针指向的值一样,说明有重复,这个时候,左指针不动,右指针继续往右移。如果他俩指向的值不一样就把右指针指向的值往前挪
if (nums[left] != nums[right]) {
nums[++left] = nums[right];
}
// return ++left;
System.out.println(++left);
for (int i = 0; i < nums.length-1; i++) {
System.out.println(nums[i]);
}
}
public static void main(String[] args){
SuanFa a = new SuanFa();
a.removeDuplicates(new int[]{1, 2, 3, 3, 5});
}