001. 删除排序数组中的重复项
public class A_RemoveDuplicates {
public static void main(String[] args) {
// int[] numInput = {0, 0, 1, 1, 1, 2, 2, 3, 3, 4};
int[] numInput = {0};
System.out.println("删除重复元素前的数组是" + Arrays.toString(numInput));
removeDuplicates(numInput);
}
/*
* 原地 删除重复出现的元素,使每个元素
* 只出现一次 ,返回删除后数组的新长度。
*/
public static int removeDuplicates(int[] nums) {
//判断数组中只有1个元素的情况
if (nums.length == 0 || nums == null) {
System.out.println("数组长度是0");
return 0;
}
//元素有两个元素的情况,后一位元素和前一位元素对比
//利用双指针解决问题
int left = 0;
for (int right = 1; right < nums.length; right++) {
if (nums[left] != nums[right]) {
nums[++left] = nums[right];
}
}
//输出数组
System.out.println("删除重复元素后的数组是:");
System.out.print("[");
for (int i = 0; i <= left; i++) {
if (i < left) {
System.out.print(nums[i] + ",");
}else {
System.out.print(nums[i]);
}
}
System.out.println("]");
System.out.println("数组长度是" + left++);
//返回新数组长度
return left++;
}
}