From 6f3c3abe451cf6f1ca4e73a7351a8e8b1a212b4e Mon Sep 17 00:00:00 2001 From: Faith Date: Sat, 16 Jul 2022 18:17:41 -0700 Subject: [PATCH] all tests passing --- hash_practice/exercises.py | 43 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/hash_practice/exercises.py b/hash_practice/exercises.py index 48bf95e..3ae2cda 100644 --- a/hash_practice/exercises.py +++ b/hash_practice/exercises.py @@ -5,7 +5,18 @@ def grouped_anagrams(strings): Time Complexity: ? Space Complexity: ? """ - pass + anagrams = {} + for string in strings: + sorted_string = sorted(string) + joined_string = ''.join(sorted_string) + if joined_string in anagrams: + anagrams[joined_string].append(string) + else: + anagrams[joined_string] = [string] + anagram_list = [] + for key in anagrams.keys(): + anagram_list.append(anagrams[key]) + return anagram_list def top_k_frequent_elements(nums, k): """ This method will return the k most common elements @@ -13,7 +24,35 @@ def top_k_frequent_elements(nums, k): Time Complexity: ? Space Complexity: ? """ - pass + nums_dict = {} + for i in range(len(nums)): + if nums[i] in nums_dict: + nums_dict[nums[i]] += 1 + else: + nums_dict[nums[i]] = 1 + + frequency_dict={} + max_value = 0 + for key, value in nums_dict.items(): + if frequency_dict.get(value): + frequency_dict[value].append(key) + else: + frequency_dict[value] = [key] + + if value > max_value: + max_value = value + final_list = [] + for i in range(k): + frequency_nums = frequency_dict.get(max_value - i) + if frequency_nums: + check_next = 0 + for num in frequency_nums: + if check_next + i < k: + final_list.append(num) + else: + break + check_next += 1 + return final_list def valid_sudoku(table):