楼主做这题的时候自己测试的时候数据能过但是一提交就出现
runtime error Line 346: Char 35: runtime error: member access within misaligned address 0x000300000001 for type ‘struct __node_type’, which requires 8 byte alignment (hashtable_policy.h)
自己去ide去调试也能得到正确答案不知道为什么 百思不得其解 希望指出我代码的问题。
楼主的思路是dfs,维持两个set one,two,如果one和two都满足要求就返回true。
class Solution {
public:
bool isValid(unordered_set<int> group, vector<vector<int>>& dislikes){
for(int i = 0; i< dislikes.size(); i++){
int a = dislikes[i][0];
int b = dislikes[i][1];
if(group.count(a)&&group.count(b))
return false;
}
return true;
}
bool dfs(unordered_set<int>& one, unordered_set<int>& two, vector<vector<int>>& dislikes){
for(auto it = two.begin(); it!=two.end(); it++){
bool a = false;
one.insert(*it);
two.erase(*it);
if(isValid(one, dislikes)&&isValid(two, dislikes)){
return true;
}else if(isValid(one, dislikes)&&!isValid(two, dislikes)){
a = dfs(one, two, dislikes);
}else {
one.erase(*it);
two.insert(*it);
}
if(a){
return true;
}
}
return false;
}
bool possibleBipartition(int N, vector<vector<int>>& dislikes) {
unordered_set<int> one, two;
for(int i = 1; i<=N; i++){
two.insert(i);
}
bool res = dfs(one, two, dislikes);
return res;
}
};