删除有序数组中的相同数用c语言
时间: 2025-02-16 09:14:39 AIGC 浏览: 49
在C语言中删除有序数组中的重复元素可以采用双指针法。以下是基本的步骤:
1. 定义两个指针,`i`(指向当前检查的元素)和`j`(指向存储唯一元素的末尾)。
2. 遍历数组从头到尾,对于每个元素`arr[i]`:
- 如果`arr[i]`比`arr[j]`大,说明找到了一个新的不同元素,将`arr[j+1]`设为`arr[i]`,然后`j++`。
- 如果`arr[i]`等于`arr[j]`,跳过这个元素,不做任何操作,继续下一次循环。
3. 当遍历完整个数组后,`arr[j]`就是新数组的结尾位置,所以你需要创建一个新的数组,长度为`j + 1`,并将原数组中前`j + 1`个元素复制到新数组中。
这是一个简单的示例代码实现:
```c
#include <stdio.h>
void removeDuplicates(int arr[], int n) {
if (n == 0 || n == 1) return;
int j = 0; // 新数组的起始位置
for (int i = 0; i < n - 1; ++i) {
if (arr[i] != arr[i + 1]) {
arr[j++] = arr[i];
}
}
arr[j++] = arr[n - 1]; // 将最后一个元素复制到新数组
arr[j] = 0; // 结束标记
printf("删除重复后的数组:\n");
for (int k = 0; k <= j; ++k) {
printf("%d ", arr[k]);
}
}
int main() {
int arr[] = {1, 2, 2, 3, 4, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
removeDuplicates(arr, n);
return 0;
}
```
当你运行这段代码,它会打印出去重后的数组:`1 2 3 4 5`。
阅读全文
相关推荐




















