1.题目
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
输入:nums = [1,1,2] 输出:2, nums = [1,2]
示例 2: 输入:nums = [0,0,1,1,1,2,2,3,3,4] 输出:5, nums = [0,1,2,3,4]
2.题目分析
- 首先先确定这个数组是有序的,运用2个指针来进行相应的对比,一个索引的指针,一个为对比的指针。
- 索引指针首先指到数组的第一个数,对比指针与索引指针比较,若一不样则索引指针加1,后取代对比指针的值。
- 之后,重复2步骤。
3.代码
nt removeDuplicates(int* nums, int numsSize)
{
int i=0;
int index=0;
if(numsSize < 2)
return numsSize;
for(i=1; i < numsSize; i++)
{
if(nums[i] !=nums[index])
{
index++;
nums[index]=nums[i]
}
}
return index + 1;
}
4.最后结果
|