C语言如何删除有序数组中的重复项
时间: 2024-11-23 17:40:34 AIGC 浏览: 113
在C语言中删除有序数组中的重复项,可以采用双指针法。通常我们会创建两个指针,一个指向当前元素,另一个指向下一个待检查的元素。遍历数组时,如果当前元素等于下一个元素,就将下一个元素向后移动;否则,将当前元素复制到下一个位置,并更新两个指针。这个过程会持续直到两个指针相遇,即到达了已排序数组的结尾。
下面是一个简单的示例代码:
```c
void removeDuplicates(int arr[], int n) {
if (n == 0 || n == 1)
return; // 如果数组为空或只有一个元素,无需处理
int i = 0; // 主索引
for (int j = 1; j < n; j++) { // 次序索引
if (arr[i] != arr[j]) { // 如果当前元素不等于前一个
i++; // 移动主索引
arr[i] = arr[j]; // 将当前元素复制到主索引位置
}
}
arr[i+1] = 0; // 结束位置设置为0,或者直接删除最后一个元素(取决于是否需要结束标记)
n = i + 1; // 更新新的数组长度
}
// 示例:
int main() {
int arr[] = {1, 2, 2, 3, 4, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
removeDuplicates(arr, n);
// 打印结果:1 2 3 4 5
// 或者打印实际长度后的部分:{1, 2, 3, 4, 5}
return 0;
}
```
阅读全文
相关推荐


















