From aabe844e75d72e3dfb7eed29f91e3194125e563b Mon Sep 17 00:00:00 2001 From: mairandomness Date: Thu, 18 Nov 2021 16:15:04 -0800 Subject: [PATCH 1/2] with to_check --- graphs/possible_bipartition.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/graphs/possible_bipartition.py b/graphs/possible_bipartition.py index ca55677..2897544 100644 --- a/graphs/possible_bipartition.py +++ b/graphs/possible_bipartition.py @@ -8,5 +8,30 @@ def possible_bipartition(dislikes): Time Complexity: ? Space Complexity: ? """ - pass + groups = [set(), set()] + not_checked = {i for i in range(len(dislikes))} + to_check = [] + + while not_checked: + if not to_check: + dog = not_checked.pop() + + else: + dog = to_check.pop() + not_checked.remove(dog) + + dog_dislikes = set(dislikes[dog]) + for other_dog in dislikes[dog]: + if other_dog in not_checked: + to_check.append(other_dog) + + if not groups[0].intersection(dog_dislikes): + groups[0].add(dog) + elif not groups[1].intersection(dog_dislikes): + groups[1].add(dog) + else: + return False + + return True + \ No newline at end of file From 3ceb2333b4194fdd6040e158cd3ca2e64b707efa Mon Sep 17 00:00:00 2001 From: mairandomness Date: Thu, 18 Nov 2021 16:18:47 -0800 Subject: [PATCH 2/2] adding some comments? --- graphs/possible_bipartition.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/graphs/possible_bipartition.py b/graphs/possible_bipartition.py index 2897544..75c1b22 100644 --- a/graphs/possible_bipartition.py +++ b/graphs/possible_bipartition.py @@ -5,12 +5,14 @@ def possible_bipartition(dislikes): """ Will return True or False if the given graph can be bipartitioned without neighboring nodes put into the same partition. - Time Complexity: ? - Space Complexity: ? + Time Complexity: O(n*m) n dogs m how disliked they are? + Space Complexity: O(n) """ groups = [set(), set()] not_checked = {i for i in range(len(dislikes))} + + # this could be a queue to_check = [] while not_checked: