c++ - 检查两个数组是否相等
问题描述
我想知道两个给定的数组是否相等,无论元素的排列如何,但包含相同的元素并且所有元素的频率必须相同。
int SameArray(int arr1[], int arr2[], int N, int M)
{
unordered_map<int, int> ump;
if(N == M)
{
for(int i = 0; i < N; i++)
{
ump[arr1[i]]++;
}
for(int i = 0; i< M; i++)
{
if(ump.find(arr2[i]) != ump.end())
ump[arr2[i]]--;
}
if(ump.empty())
return 1;
}
return 0;
}
它没有显示任何错误,但输出始终为 0。
解决方案
您正在寻找std::is_permutation
:
bool SameArray(const std::vector<int>& arr1, const std::vector<int>& arr2) {
return std::is_permutation(arr1.begin(), arr1.end(), arr2.begin(), arr2.end());
}
我冒昧地将您的函数返回更改为bool
并将std::vector
s 作为函数参数,因为这是 C++ 而不是 C。
如果您对比较的工作原理感到好奇std::permutation
,请查看其示例实现。
推荐阅读
- gitlab - 错误:合并失败:合并期间出现问题:3:US-ASCII 中的字节序列无效。请再试一次。在 GitLab 上
- matrix - 在 ThreeJS 中绘制镜像对象
- flutter - 在 Flutter 中将 JSON 作为字符串处理
- apache-flink - Beam WordCount TaskManagerFailure NoClassDefFoundError for MetricUpdates$MetricUpdate
- javascript - Deviantart 的 Greasemonkey/Tempermonkey 脚本
- python - 如何对具有n个元素的数组进行排序,其中k个元素在O(n + k log k)中不合适?
- python - 当日期和时间是整数时,如何使用 Pandas 获取 DateTime 对象?
- data-visualization - 使用 Vegalite 的多直方图
- ios - SwiftUI ScrollView BlendMode 问题
- java - 匹配方法时忽略Accept-Encoding?