题目
给你一个 非严格递增排列 的数组 nums
,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums
中唯一元素的个数。
思路
1、不需要考虑数组中超出新长度后面的元素(这句话也是重点)
2、定义一个变量k,是原数组中可移动的下标
3、遍历数组,把不重复的数往前移动到k的位置,直到遍历完整个数组,最后返回去重后的数组长度,也就是k
以此类推
代码
class Solution {
public int removeDuplicates(int[] nums) {
int k = 1;
for (int i=1;i<nums.length;i++) {
if (nums[i] != nums[i-1]) { // nums[i] 不是重复项
nums[k++] = nums[i]; // // 则保留 nums[i]
}
}
return k;
}
}