1.(10分)给定一个排好序的数组,去除数组中重复的元素,保证每个元素只出现一次例如1,1,2返回1,2 输入输出格式 printf("Please input the arraysize\n"); scanf("%d"); for() { printf("Please input the %d-th number\n"); scanf("%d"); } printf("values are %d\n"); for () { printf("%d\n"); } 函数原型为 int removeDuplicates(int nums[], int numsSi2e)
时间: 2024-03-02 16:49:07 浏览: 84
好的,我知道你的问题了。下面是对应的 C 代码:
```c
#include <stdio.h>
int removeDuplicates(int nums[], int numsSize) {
if (numsSize == 0) {
return 0;
}
int i = 0;
for (int j = 1; j < numsSize; j++) {
if (nums[j] != nums[i]) {
i++;
nums[i] = nums[j];
}
}
return i + 1;
}
int main() {
int numsSize;
printf("Please input the array size\n");
scanf("%d", &numsSize);
int nums[numsSize];
for (int i = 0; i < numsSize; i++) {
printf("Please input the %d-th number\n", i + 1);
scanf("%d", &nums[i]);
}
int newLength = removeDuplicates(nums, numsSize);
printf("Values are:\n");
for (int i = 0; i < newLength; i++) {
printf("%d\n", nums[i]);
}
return 0;
}
```
这里使用了双指针法,时间复杂度为 O(n),空间复杂度为 O(1)。函数返回的是去重后的数组长度。
阅读全文