1.方法暴力。如果用三重循环,会超时。所以借助哈希表,将三重循环拆成两个两重循环,解题。
class Solution {
public:
int countTriplets(vector<int>& A) {
int n=A.size();
unordered_map<int,int> h1,h2;
for(int i=0;i<n;i++) h1[A[i]]++;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
h2[A[i]&A[j]]++;
}
}
int ans=0;
for(auto x:h1){
for(auto y:h2){
if((x.first&y.first)==0){
ans+=x.second*y.second;
}
}
}
return ans;
}
};