快慢指针--删除有序数组中的重复项
Posted 4nc414g0n
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快慢指针--删除有序数组中的重复项相关的知识,希望对你有一定的参考价值。
问题
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
分析:
定义两个标志
,由于是有序数组,当快指针每次加一并和慢指针指向的数组元素比较相同就继续加一,不相同就把值付给慢指针指向的数组元素,快慢指针同时加一
代码如下:
int removeDuplicates(int* nums, int numsSize){
int fast=1;
int slow=0;
if(numsSize==0)
{
return numsSize;
}
while(fast<numsSize)
{
if(nums[fast]==nums[slow])
{
fast++;
}
else{
slow++;
nums[slow]=nums[fast];
fast++;
}
}
return slow+1;
}
以上是关于快慢指针--删除有序数组中的重复项的主要内容,如果未能解决你的问题,请参考以下文章