#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
int removeDuplicates(int* nums, int numsSize) {
if (numsSize == 1)
return numsSize;
int* p = (int*)malloc(sizeof(int*)*numsSize);
assert(p);
int j = 0, k = 1;
for (int i = 0; i < numsSize; i++){
p[0] = nums[0];
if (nums[i] <= p[j])
;
else{
j++;
p[j] = nums[i];
k++;
}
}
memcpy(nums, p, k * sizeof(int));
free(p);
p = NULL;
return k;
}
int main()
{
//int arr[] = { 0,1,2,3,3,4,4,4,5,6,7,8 };
//int arr[] = { 1,3,3,4,4,4,5,6,7,8 };
//int arr[] = { 1,1,1,1 };
//int arr[] = { 1,1,1,1,2,2 };
//int arr[] = { 1,1,2 };
int arr[] = { 0,0,1,1,2,2,3,3 };
int sz = sizeof(arr) / sizeof(arr[0]);
int k = removeDuplicates(arr, sz);
for (int i = 0; i < k; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
每天一道练习题-删除有序数组中的重复项
于 2024-02-29 10:00:00 首次发布