比较两个数组并替换不重复的元素- c++
Compare two arrays and replace elements without duplicating - c++
我似乎不知道如何比较两个数组在c++中,myArray1 &myArray2,并将myArray1中的零替换为myArray2中的元素,而不重复任何数字。本质上,我想用1来替换这两个0;3 -以任何顺序....
int myArray1[4] = [0,2,0,4]
int myArray2[4] = [1,2,3,4]
我希望输出为:
myArray1[4] = [1,2,3,4] -or- [3,2,1,4]
如果这是一个重复的问题,我很抱歉。
根据我的理解,这可能是解决方案:
int main(){
int myArray1[4] = {0,2,0,4};
int myArray2[4] = {1,2,3,4};
for (int i = 0; i < 4; i ++)
{
for (int j = i; j <4 ; j++) {
if (myArray1[i] == 0) {
myArray1[i] = myArray2[j];
}
}
}
for(int i = 0;i<4;++i){
cout<<myArray1[i]<<" ";
}
return 0;
}
您的任务可以通过集合操作来解决:
const size_t N = 4;
int a[N] = {0,2,0,4};
int b[N] = {1,2,3,4};
int r[N] = {};
{
std::sort(a, a+N);
std::sort(b, b+N);
// invariant: the a set must be in the b set
std::set_union(a, std::remove(a, a+N, 0), b, b+N, r);
}
for(size_t i = 0; i < N; ++i)
std::cout << i << ":" << r[i] << std::endl;
朴素的解决方案是遍历myArray1
以找到0,当找到1时,遍历myArray2
以找到myArray1
中不存在的第一个元素(这将在另一个嵌套循环中完成)。
那么你将有三个循环,每个循环嵌套在另一个循环中。
在伪代码for each value1 in myArray1:
if value1 = 0:
for each value2 in myArray2:
// Check that the value from myArray2 doesn't exist in myArray1
found = false
for each tempValue1 in myArray1:
if value2 = tempValue1:
found = true // Found a duplicate
break out of loop
if not found:
value1 = value2
break out of loop
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 使用不带参数的函数访问结构元素
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- C++如何通过用户输入删除列表元素
- lower_bound()返回最后一个元素
- 基于多个条件处理地图中的所有元素
- 调整大小后指向元素值的指针unordered_map有效?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 使用函数"remove"删除重复元素
- 具有最大子序列大小的序列,每个元素都相同
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将元素添加到数组的线程安全函数?
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- 我想访问std::unique_ptr中的一个特定元素
- 如何通过 getter 函数删除矢量的元素?
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 从控制台中删除最后打印的元素
- 擦除while循环中迭代的元素