From a088b528e7c8ebdd57414524373813b385784e80 Mon Sep 17 00:00:00 2001 From: Alie Ibarra Date: Tue, 12 Jul 2022 10:15:06 -0700 Subject: [PATCH 1/4] Pass all anagrams tests --- hash_practice/exercises.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/hash_practice/exercises.py b/hash_practice/exercises.py index 48bf95e..7eabfd8 100644 --- a/hash_practice/exercises.py +++ b/hash_practice/exercises.py @@ -2,10 +2,23 @@ def grouped_anagrams(strings): """ This method will return an array of arrays. Each subarray will have strings which are anagrams of each other - Time Complexity: ? - Space Complexity: ? + Time Complexity: O(n^2) + Space Complexity: )(n) """ - pass + anagrams_map = {} + for word in strings: + alpha_word = "".join(sorted(word)) + if anagrams_map.get(alpha_word): + anagrams_map[alpha_word].append(word) + else: + anagrams_map[alpha_word]= [word] + + anagram_groups = [] + for key, value in anagrams_map.items(): + anagram_groups.append(value) + + + return anagram_groups def top_k_frequent_elements(nums, k): """ This method will return the k most common elements From f4d76bc3bd7c21844597cdde3da09a177e222121 Mon Sep 17 00:00:00 2001 From: Alie Ibarra Date: Tue, 12 Jul 2022 10:19:20 -0700 Subject: [PATCH 2/4] Refactor anagrams to reduce time complexity --- hash_practice/exercises.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/hash_practice/exercises.py b/hash_practice/exercises.py index 7eabfd8..3bf8059 100644 --- a/hash_practice/exercises.py +++ b/hash_practice/exercises.py @@ -2,8 +2,8 @@ def grouped_anagrams(strings): """ This method will return an array of arrays. Each subarray will have strings which are anagrams of each other - Time Complexity: O(n^2) - Space Complexity: )(n) + Time Complexity: O(n) + Space Complexity: O(n) """ anagrams_map = {} for word in strings: @@ -12,13 +12,9 @@ def grouped_anagrams(strings): anagrams_map[alpha_word].append(word) else: anagrams_map[alpha_word]= [word] - - anagram_groups = [] - for key, value in anagrams_map.items(): - anagram_groups.append(value) - - return anagram_groups + + return list(anagrams_map.values()) def top_k_frequent_elements(nums, k): """ This method will return the k most common elements From bfc11b35524f6a52095b76330698c050863e6f8a Mon Sep 17 00:00:00 2001 From: Alie Ibarra Date: Tue, 12 Jul 2022 10:49:03 -0700 Subject: [PATCH 3/4] Pass all top_k tests --- hash_practice/exercises.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/hash_practice/exercises.py b/hash_practice/exercises.py index 3bf8059..3263f23 100644 --- a/hash_practice/exercises.py +++ b/hash_practice/exercises.py @@ -19,10 +19,18 @@ def grouped_anagrams(strings): def top_k_frequent_elements(nums, k): """ This method will return the k most common elements In the case of a tie it will select the first occuring element. - Time Complexity: ? - Space Complexity: ? + Time Complexity: O(n) + Space Complexity: O(n) """ - pass + nums_map = {} + + for num in nums: + if not nums_map.get(num): + nums_map[num] = 0 + nums_map[num] += 1 + + sorted_nums_map_keys = sorted(nums_map.keys(), key=nums_map.get, reverse = True ) + return sorted_nums_map_keys[:k] def valid_sudoku(table): From 3937ede1c9db61deacc6147845efec7fedbdbe11 Mon Sep 17 00:00:00 2001 From: Alie Ibarra Date: Thu, 14 Jul 2022 13:36:53 -0700 Subject: [PATCH 4/4] Passes all mandatory tests --- hash_practice/exercises.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hash_practice/exercises.py b/hash_practice/exercises.py index 3263f23..57b1548 100644 --- a/hash_practice/exercises.py +++ b/hash_practice/exercises.py @@ -42,5 +42,7 @@ def valid_sudoku(table): Time Complexity: ? Space Complexity: ? """ - pass + is_valid_sodoku = False + + return is_valid_sodoku