C++ 比较C+中两个数组的2个元素+;
我有两个数组,每个数组都有一些值,例如:C++ 比较C+中两个数组的2个元素+;,c++,arrays,function,compare,C++,Arrays,Function,Compare,我有两个数组,每个数组都有一些值,例如: int a[] = {1, 2, 3, 4}; int b[] = {0, 1, 5, 6}; 现在我需要比较数组(a)中的元素和数组(b)中的元素。。 如果存在任何匹配项,程序应返回错误或打印“错误存在重复值”等。。 在上述情况下,它应该返回一个错误,因为它们都有相同的值 我该怎么做呢???如果阵列这么小,我只需要使用蛮力方法,并在两个阵列之间循环: for (int i=0;i<4;++i) { for (int j=0;j<
int a[] = {1, 2, 3, 4};
int b[] = {0, 1, 5, 6};
现在我需要比较数组(a)中的元素和数组(b)中的元素。。
如果存在任何匹配项,程序应返回错误或打印“错误存在重复值”等。。
在上述情况下,它应该返回一个错误,因为它们都有相同的值
我该怎么做呢???如果阵列这么小,我只需要使用蛮力方法,并在两个阵列之间循环:
for (int i=0;i<4;++i)
{
for (int j=0;j<4;++j)
{
if (a[i] == b[j])
{
// Return an error, or print "error there is a duplicate value" etc
}
}
}
for(int i=0;i假设两个数组都已排序,您可以按如下方式对它们进行单步排序:
// int array1[FIRSTSIZE];
// int array2[SECONDSIZE];
for(int i=0, j=0; i < FIRSTSIZE && j < SECONDSIZE; ){
if(array1[i] == array2[j]){
cout << "DUPLICATE AT POSITION " << i << "," << j << endl;
i++;
j++;
}
else if(array1[i] < array2[j]){
i++;
}
else{
j++;
}
}
//int-array1[FIRSTSIZE];
//int array2[第二尺寸];
对于(int i=0,j=0;i cout已发布排序数组的解决方案。如果数组未排序,您可以从每个数组中构建一个集合(例如,std::set
或哈希集合),并查看集合是否不相交。您可能必须在集合中存储值-索引对,以找出重复的索引(并适当地重载比较运算符)。这可能会导致O(n logn)的复杂性。//v={1,2,3,4};vector
//v={1,2,3,4}; vector
//v1={1,2,3,4} vector
bool f=0;
if(equal(v.begin(),v.end(),v1.begin())) //compare two vector, if equal return true
{
f=1;
}
}
if(f==1)
cout<<"Yes"<<endl;
else cout<<"No"<<endl;
enter code here
//v1={1,2,3,4}向量
boolf=0;
if(equal(v.begin(),v.end(),v1.begin())//比较两个向量,如果equal返回true
{
f=1;
}
}
如果(f==1)
请注意,这是一个二次复杂度算法,不适用于大型数据集。谢谢,我刚刚添加了标志,并在循环if-else stations and done之后添加:)谢谢,我喜欢这个答案。我应该注意:散列集是在TR1.std::TR1::unordered_集中实现的,boost::unordered_集。TR1是在GCC和visualstudio中实现的,所以std::TR1::unordered_集应该是“足够标准的”。假设在unordered_集中一切正常,您应该能够在O(n)中实现这一点。