力扣链接:26.删除有序数组中的重复项
难度:⭐
解题关键词:双指针
解题思路:使用快慢指针,然后往后移动,如果两个数相等,那么快指针继续往后移动一位,慢指针不动,如果不相等,那么把慢指针往后移动,把快指针的元素赋值给它,然后快指针再往后移动一位。
typescript
function removeDuplicates(nums: number[]): number {
const len = nums.length;
if (len === 1) return 1;
let slow = 0;
let fast = 1;
while (fast < len) {
// 有相同元素,快指针继续往后
if (nums[slow] === nums[fast]) {
fast++;
} else {
// 不相等,把快指针元素赋值到慢指针后面
nums[++slow] = nums[fast++];
}
}
return slow + 1;
}