diff --git a/hash_practice/exercises.py b/hash_practice/exercises.py index 48bf95e..58505ac 100644 --- a/hash_practice/exercises.py +++ b/hash_practice/exercises.py @@ -2,18 +2,46 @@ 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)? The fucntion only loops through the length of strings for + the number of letters in each string? + Space Complexity: O(n)? Theres only 2 varaibles being stored...sortedWord and anagramsHash? """ - pass + anagramsHash = {} + for string in strings: + sortedWord = "".join(sorted(string)) + if sortedWord in anagramsHash: + anagramsHash[sortedWord].append(string) + else: + anagramsHash[sortedWord] = [string] + return list(anagramsHash.values()) + 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^2)? """ - pass + freqHash = {} + finalList = [] + + if len(nums) == 0: + return finalList + for number in nums: + if number not in freqHash: + freqHash[number] = 0 + else: + freqHash[number] += 1 + + count = 1 + + while count <= k: + finalList.append(sorted(freqHash, key=freqHash.get)[-count]) + count += 1 + return finalList + + + def valid_sudoku(table):