【发布时间】:2021-11-05 03:33:09
【问题描述】:
这是我用于检查集合(a2)是否是另一个(a1)的子集的函数代码。
在主函数中,数组被声明,然后传递给这个 isSubset 函数。
我创建了一个所有元素为 0 的哈希数组,并先将其从 a1 中的元素递增,然后是 a2
现在计算哈希数组中值为 2 的元素。
string isSubset(int a1[], int a2[], int n, int m) {
int max=a1[0];
int count=0;
for(int i=0;i<n;i++){
if(a1[i]>max){
max=a1[i];
}
}
int hash[max+1]={0};
for(int i=0;i<n;i++){
hash[a1[i]]++;
}
for(int i=0;i<m;i++){
hash[a2[i]]++;
}
for(int i=0;i<max+1;i++){
if(hash[i]==2)
count++;
}
if(count==m)
return "Yes";
else return "No";
}
【问题讨论】:
-
请提供minimal reproducible example。考虑在调试器中运行代码,以便查看崩溃的位置和原因。
-
您应该想从数组 a1 和 a2 中获取最大值,但您只能从数组 a1 中获取最大值。程序在执行“hash[a2[i]]++;”时可能“数组越界”