【发布时间】:2021-11-08 02:16:22
【问题描述】:
bool isSubset(int arr1[], int m,int arr2[], int n){
set<int> hashset;
for (int i = 0; i < m; i++){
hashset.insert(arr1[i]);
}
for (int i = 0; i < n; i++) {
if (hashset.find(arr2[i]) == hashset.end())
return false;
}
return true;
}
这是查找arr2 是否是arr1 的子数组的正确方法吗
因为子数组是数组的连续部分,但是这段代码没有检查任何顺序,这就是我想确定的原因。
【问题讨论】:
-
试试看。您似乎很清楚要尝试的测试用例。
-
取决于“子数组”的含义 - 这不是一个具有通用定义的术语。如果
arr2的所有元素都是arr1的元素,则您的函数返回true。如果您想检查arr2的所有元素的序列是否作为arr1中的序列出现,那么您的功能不符合您的要求。比如arr1 = {1,2,3,4}和arr2={3,2}会根据你的函数测试为真,但是{3,2}序列不在arr1中。 -
子数组是数组的连续部分,就像子字符串
-
std::search是一个东西。此外,std::set是树集,而不是哈希集。
标签: c++ arrays data-structures sub-array