算法学习 删除排序数组中的重复项
力扣初级算法题
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
思路:
-
left
初始值为0,right
初始值为1并且遍历整个数组 -
当
right
下标的值与left
下标的值不相同,left
向右移动一位,并将right
下标的值传给left
下标的值,right
向右移动nums[++i] = nums[j]
-
如果
right
下标的值与left
下标的值相同,那么left
不移动,right
继续向右移动
代码展示
class Solution {
public int removeDuplicates(int[] nums) {
int i = 0;
for(int j=1;j<nums.length;j++){
if(nums[j] != nums[i]){
nums[++i] = nums[j] ;
}
}
return ++i;
}
}