【发布时间】:2020-09-16 02:37:00
【问题描述】:
这种方法有什么问题吗?还是很好?我们必须判断两个数组是否相等 就像它们中的数字一样,它们的频率必须相同,而与它们的顺序无关。
#include<bits/stdc++.h>
using namespace std;
main(){
int t,n,i,in;
vector<int> x;
cin>>t;
while(t--){
unordered_map<int,int> a,b;
cin>>n;
for(i=0;i<n;i++){
cin>>in;
x.push_back(in);
a[in]++;
}
for(i=0;i<n;i++){
cin>>in;
b[in]++;
}
for(i=0;i<n;i++){
if(b.find(x[i]) == b.end()){
cout<<"0"<<endl;
goto x;
}
if(a[x[i]] != b[x[i]]){
cout<<"0"<<endl;
goto x;
}
}
cout<<"1"<<endl;
x : ;
}
}
【问题讨论】:
-
在 0 到 Chrome 的范围内,您真的可以使用无用的内存。而且你没有做 Chrome 的工作。
-
我推荐learning from a good book。无论你从现在学到什么,都会让你走向失败。
-
你为什么不用
if (a == b)? -
将数字读入两个向量,然后对两个向量进行排序,然后比较它们。
标签: c++ hash stl c++14 unordered-map