- 根据leetcode给出的答案进行详解,我的解答和理解会比较的语义化
- leetcode给的解答方式是进行快慢指针的元素检验,当然也可以通过其他算法(比如过左右指针进行比较也可)
var removeDuplicates = function(nums) {
//判断是否存在数组
const n = nums.length;
if (n === 0) {
return 0
}
//设置快慢指针
let fast = 1,
slow = 1;
//循环小于数组长度指针
while (fast < n) {
//慢指针比快指针要慢一步
//如果快指针前后两个数据不相等 则将快指针的后数据给慢指针
//快指针执行完毕则退出循环,长度停留在慢指针被替换的数值 为2
if (nums[fast] !== nums[fast - 1]) {
nums[slow] = nums[fast];
++slow
}
++fast;
}
//输出要替换后的长度
return slow
//如要输出结果 则将替换后的最后重复的元素给删除掉
//nums.pop(nums[slow])
//return nums
};
console.log(removeDuplicates([1, 1, 2]))
```