你能帮我解决删除数组 c++ 中重复值的挑战吗?
Can you help me with a deleting duplicated values in an array c++ challenge?
挑战在于编写一个删除数组重复值的程序。
#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,则添加该值。 然后计数器重新启动。
感谢您对新程序员的帮助,我真的尝试自己解决它。
使用std::vector
:
如果你想偷懒,试着看看这个例子。您可以执行以下操作(未测试(:
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;
}
"硬核"C++:
如果你想解决你的问题,并继续你的解决方案,使用一种更"原始"的方法,你将需要确保返回的数组恰好是数组a
中唯一元素的数量。
所以,首先,获取a
的独特元素的数量,看看这个答案。之后,您可以创建输出数组,b
:
int b = new int[size_calc_from_post]
//do stuff here.
delete[] b; // make sure to delete!
b = NULL;
相关文章:
- 你能帮我解决删除数组 c++ 中重复值的挑战吗?
- 如何改进我的代码,使其不会因超时而终止?(黑客排名挑战)
- 玩数字编程挑战(子数组的平均值)
- 电话价格问题(十月挑战代码厨师)
- 为什么针对给定挑战的此解决方案不起作用?
- 无法在代码厨师七月挑战中找到我的逻辑错误
- 为什么这段代码只输出" "?(Codeingame的雷神挑战)
- 改进我的代码以应对C++的挑战,新手在这里
- 我需要对这个代码部队挑战 784F 进行哪些更改
- 基本派生的类成员覆盖.挑战活动11.3
- 对操作员限制的代码挑战的无效解决方案
- 在初学者编码挑战中麻烦
- 需要在O(n)复杂性中解决的数组编码挑战
- 解决黑客等级" Summing the N series"挑战
- 尝试解决HackerBank上的BFS挑战时出现错误的alloc异常
- 我如何在AI挑战行星战争中运行四个机器人
- 应对"Find the first repeated character in a string"挑战的最紧凑、高效、可读和智能的解决方案
- 程序挑战的正确答案百分比
- 欧拉计划挑战3:找到大数的最大素因数
- 我需要帮助来理解编程挑战