题目:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
#include<stdio.h>
//在长度为size的数组中查找ele元素,若存在,则返回1,不存在返回0
int findEleInArr(int* arr, int arrSize, int ele) {
int res = 0;
int j = 0;
for (j = 0; j < arrSize; j++) {
if (ele == arr[j]) {
res = 1;
break;
}
}
return res;
}
int removeDuplicates(int* nums, int numsSize) {
int index = 1; //当前需要修改的数组索引
int i = 0;
if (numsSize == 0) return 0;
for (i = 1; i < numsSize; i++) {
if (!findEleInArr(nums, i, nums[i])) {
if (index < numsSize) {
nums[index] = nums[i];
}
index++;
}
}
return index;
}
int main() {
int nums[2] = {1, 2};
int i = 0;
removeDuplicates(nums, 2);
for (i = 0; i < 2; i++) {
printf("%d ", nums[i]);
}
return 0;
}