给你一个 非严格递增排列 的数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
public int removeDuplicates(int[] nums) {
// 快慢指针
int slow = 1;
for (int fast = 1; fast < nums.length; fast++){
if(nums[fast] != nums[slow - 1]){ // fast-1 也可
nums[slow++] = nums[fast];
}
}
return slow;
}
给你一个有序数组 nums ,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成。
public int removeDuplicates(int[] nums) {
if(nums.length <= 2){
return nums.length;
}
// 快慢指针
int slow = 2;
for (int fast = 2; fast < nums.length; fast++){
if(nums[fast] != nums[slow - 2]){
nums[slow++] = nums[fast];
}
}
return slow;
}