26. Remove Duplicates from Sorted Array
前提是在 已经排序好的数组,需要在原数组做替换操作 in-place
解题思路
- 排序好的数组,无非前后两项相等或不相等
- 首先排除空数组,直接返回
0 - 那么有数据的数组,最少会有不重复元素的数量为
count = 1 - 为了对比前后项设置
i = 1开始遍历数组 - 当前后项相等时,不计入不重复的
count数量, 仅做i = i + 1开始对比下一项 - 当前后项不相等时,首先将
count指向的重复项的位置替换掉nums[count] = nums[i],同时计入count = count + 1 - 最后返回统计好的不重复元素的数量
count
代码
var removeDuplicates = function(nums) {
const len = nums.length;
if (len === 0) {
return 0;
}
let i = 1, count = 1;
while (i < len) {
if (nums[i] !== nums[i - 1]) {
nums[count] = nums[i];
count = count + 1
}
i = i + 1
}
return count;
};