給定一組 n 人(編號為 1, 2, ..., n), 我們想把每個人分進任意大小的兩組。
每個人都可能不喜歡其他人,那麼他們不應該屬於同一組。
形式上,如果 dislikes[i] = [a, b],表示不允許將編號為 a 和 b 的人歸入同一組。
當可以用這種方法將所有人分進兩組時,返回 true;否則返回 false。
示例 1:
輸入:n = 4, dislikes = [[1,2],[1,3],[2,4]]
輸出:true
解釋:group1 [1,4], group2 [2,3]
示例 2:
輸入:n = 3, dislikes = [[1,2],[1,3],[2,3]]
輸出:false
示例 3:
輸入:n = 5, dislikes = [[1,2],[2,3],[3,4],[4,5],[1,5]]
輸出:false
dfs或者擴充套件並查集
並查集:
class solution
return true;
}class unionfind
public int find(int x)
return x;
}public void merge(int x, int y)
}}
dfs:
class solution
for(int i = 1; i <= n; i++)
return true;
}private boolean dfs(int i, int c)
return true;
}}
886 可能的二分法
題目描述 示例 1 輸入 n 4,dislikes 1,2 1,3 2,4 輸出 true 解釋 group1 1,4 group2 2,3 示例 2 輸入 n 3,dislikes 1,2 1,3 2,3 輸出 false 示例 3 輸入 n 5,dislikes 1,2 2,3 3,4 4,5 ...
886 可能的二分法
給定一組 n 人 編號為 1,2,n 我們想把每個人分進任意大小的兩組。每個人都可能不喜歡其他人,那麼他們不應該屬於同一組。形式上,如果 dislikes i a,b 表示不允許將編號為 a 和 b 的人歸入同一組。當可以用這種方法將所有人分進兩組時,返回 true 否則返回 false。impor...
C 二分法查詢,遞迴二分法
用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...