LeetCode 886. Possible Bipartition
2020-05-28 20:09:15
# leetcode
Problem
LeetCode 886. Possible Bipartition
1. 题目简述
给出n个人,编号从(1…n),我们可以将他们分成任意大小的两组,但是他们之间会有讨厌某些人的关系,那么他们就不用管被分到同一个组里。
用公式化的形式来讲,就是如果dislikes[i] = [a, b],那么a和b就不会被分到同一个组里。我们需要判断能否做到合适的分组,满足所有dislike条件。
Input: N = 4, dislikes = [[1,2],[1,3],[2,4]]
Output: true
Explanation: group1 [1,4], group2 [2,3]
2. 算法思路
经典的二分图算法,和785是一样的,只不过本题需要先把整张dislike图给construct出来。染色,然后判断是否ok。
DFS
BFS
注意
首先将整张dislike图build出来,因为我们并不知道每个人究竟有多少个dislike的对象,所以可以用ArrayList的数组来存储。这里需要注意ArrayList数组的初始化问题!!!ArrayList数组应该这样初始化,注释中的做法不可用!!!
原因在于foreach不能用于元素赋值或初始化,而是将数组中元素copy一份给临时变量。
1 |
|
3. 解法
DFS:
1 |
|
BFS:
下次看到这里再留着练手吧