题目
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
C
思路分析
根据题目的要求,我第一时间想到的是用替代来达到删除的效果。因为他的数组是排序好了的,所以不用去考虑遗漏数据。
代码实现
int removeDuplicates(int* nums, int numsSize){
int re=0; //重复元素的数量
for(int i=0;i<numsSize-1;i++){
if(nums[i] == nums[i+1]){
re += 1;
}
//向前移动覆盖
nums[i + 1 -re] = nums[i + 1];
}
return (numsSize-re);
}
代码稍微难理解的地方是覆盖吧。
结果
自我感觉一般吧
进阶版
啊这