去数组中重复的数字,使之只剩一个。数组中的数已按由小到大的顺序排列。c++
时间: 2024-12-14 15:14:55 浏览: 14
C++ 中约瑟夫环替换计数器m(数组解决)
在C++中,要去除数组中的重复元素并保留唯一值,可以采用多种方法。这里我们可以使用一种简单直观的方式来实现,即遍历数组,如果遇到的元素等于前一个元素,则跳过,否则将其保存。以下是使用迭代的方法:
```cpp
#include <iostream>
using namespace std;
void removeDuplicates(int arr[], int n) {
if (n == 0 || n == 1) return; // 如果数组为空或只有一个元素,无需处理
int index = 1; // 开始索引,用于存放不重复的元素
for (int i = 1; i < n; ++i) {
if (arr[i] != arr[i - 1]) { // 如果当前元素不等于前一个
arr[index++] = arr[i]; // 将该元素放到新位置
}
}
// 更新数组长度,只包含去重后的元素
arr[index] = 0;
}
// 测试函数
int main() {
int arr[] = {1, 2, 3, 4, 4, 5, 6, 6, 7};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Original array:\t";
for (int i = 0; i < n; ++i)
cout << arr[i] << " ";
removeDuplicates(arr, n);
cout << "\nArray with duplicates removed:\t";
for (int i = 0; i <= n; ++i)
if (arr[i])
cout << arr[i] << " ";
return 0;
}
```
当你运行上述代码时,会输出去重后的数组。注意这个例子假设数组已经按照升序排列,如果你不确定是否有序,可以在处理之前先对数组进行排序。
阅读全文