解题思路
主要是统计有序数组中的重复项,可以利用快慢指针,慢指针slow默认是1,快指针fast也是1,快指针的当前的值和前一个的值如果不相等,那么当前数组的slow项的值为数组fast项的值。快指针继续向后运行,慢指针也加1。最后返回慢指针的计数
代码
var removeDuplicates = function(nums) {
const n = nums.length;
if(n === 0 ){
return 0;
}else {
let slow = 1,fast = 1;
while(fast < n){
if(nums[fast] != nums[fast-1]){
nums[slow] = nums[fast]
++slow;
}
++fast
}
return slow;
}
};
//const nums = [1,1,2];
const nums = [0,0,1,1,1,1,2,2,2,3,3,4]
console.log('--result--',removeDuplicates(nums));
总结
利用快慢指针(双指针),类似的有leetcode:380题目