可能的二分法

2021-10-11 11:37:07 字數 870 閱讀 4303

給定一組 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...