挑战在于编写一个程序,该程序删除数组的重复值。
#include <iostream>
using namespace std;
void func(int arrayA[], int n, int arrayB[]) {
int h = 0;
int count = 0;
arrayB[0] = arrayA[0];
for (int i = 1; i < n; i++) {
count = 0;
for (int j = 0; j < n; j++) {
if (arrayB[i] == arrayA[j]) {
count++;
}
}
if (count == 0) {
h++;
arrayB[h] = arrayA[i];
}
}
}
int main() {
int n;
cin >> n;
int arrayA[n];
int arrayB[n];
for (int i = 0; i < n; i++) {
cin >> arrayA[i];
}
func(arrayA, n, arrayB);
for (int i = 0; i < n; i++) {
cout << arrayB[i] << endl;
}
}
我的逻辑是创建一个新数组,并用非重复值填充它,为此,我创建了一个循环,当找到重复值时该循环将1加到计数器上,如果计数器等于0,则添加该值。然后计数器重新启动。
谢谢您对新程序员的帮助,我真的尝试自己解决它。
答案 0 :(得分:1)
使用std::vector
:
如果您想偷懒,请尝试签出此example。您可以执行以下操作(未测试):
std::vector<int> func(int a[], int size_a){
std::vector<int> vec_a(a, a + size_a);
std::sort(vec_a.begin(), vec_a.end());
std::vector<int> ordered_vec_a = std::unique(vec_a.begin(), vec_a.end());
vec_a.erase(ordered_vec_a, vec_a.end());
return ordered_vec_a;
}
“ Hardcore” C ++ :
如果您想解决问题并继续使用“原始”方法继续解决问题,则需要确保返回的数组完全个唯一数组a
中的元素。
因此,首先,获取a
的唯一元素的数量,看看此answer。之后,您可以创建输出数组b
:
int b = new int[size_calc_from_post]
//do stuff here.
delete[] b; // make sure to delete!
b = NULL;