给定一个有序数组,在原数组中删除重复的元素,返回新的长度。
不能新建一个数组分配额外空间,必须在原数组上进行操作。
例如:
给定输入数组 nums=[1,1,2],
你的方法需要返回新的长度等于2,新数组中前两个元素是 1 和 2。不关心数组中超过新长度部分的内容。
public class Solution {
public static int removeDuplicates(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
if (nums.length == 1) {
return 1;
}
int i = 0;
int j = 1;
while (i < nums.length && j < nums.length) {
while (i == 0 || i < nums.length && nums[i] > nums[i - 1]) {
i++;
}
while (i < nums.length && j < nums.length && nums[j] <= nums[i - 1]) {
j++;
}
if (i < nums.length && j < nums.length) {
if (nums[j] <= nums[i - 1]) {
break;
}
if (j != i) {
nums[i] = nums[j];
i++;
j++;
}
}
}
return i;
}
}