今天刷了几道关于数组重复项的题,感觉基本上都可以用双指针,下面的代码语言均为JavaScript
删除数组中的重复项
/**
* @param {number[]} nums
* @return {number}
*/
var removeDuplicates = function(nums) {
let right = 1,left = 1;//即快慢指针
while(right <nums.length)
{
if(nums[right -1] !=nums[right])
{
nums[left] = nums[right];
++left;
}
++right;
}
return left;
};
删除重复项(出现次数超过两次的元素只出现两次)
面试金典题:题号80
这个题和上个题的思路一样,只是需要判断时快慢指针之间的长度为2,即检查上上个被保留的元素与当前元素是否一致
主要代码:nums[left -2] !=nums[right]
/**
* @param {number[]} nums
* @return {number}
*/
var removeDuplicates = function(nums) {
let left =2,right=2;
while(right < nums.length)
{
if(nums[right] != nums[left-2]){
nums[left] = nums[right]
++left;
}
++right;
}
return left;
};