给你一个 非严格递增排列 的数组 nums
,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums
中唯一元素的个数。
eg:
输入:nums = [1,1,2] 输出:2
思路:快慢指针
fast=1;slow=1;
因为第一个元素一定是要的,所以起点从1开始。
若快指针与前一个位置的内容相同则继续往前走,slow不变;若快指针与前一个位置的内容不同则将快指针位置的内容给慢指针,然后慢指针向后移动一步,快指针继续走,直到数组最后
代码如下:
int remove (int* nums,int numsize)
{
int slow=1;
int fast=1;
while(fast<numsize)
{
if(nums[fast]!=nums[fast-1];
{
nums[slow]=nums[fast];
slow++;
}
fast++;
}
return slow;
}