Conversation
CheezItMan
left a comment
There was a problem hiding this comment.
Nice work Drew, your functions work, but you're off on the time/space complexity. Take a look at my comments and let me know if you have any questions.
| 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) | ||
| Space Complexity: O(n log n) |
There was a problem hiding this comment.
👍 The time complexity is right if the words are all of limited length (like english words).
The space complexity is O(n) because you're building a dictionary of n words.
| 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) |
There was a problem hiding this comment.
👍 However your time complexity is O(nk) because you're looping through the words and k times finding the maximum word (most common).
| for i in range(k): | ||
| highest_freq_value = max(highest_k_hash, key=highest_k_hash.get) |
There was a problem hiding this comment.
Note that you have a loop here which runs k times and inside it you're going through the dictionary (of max n elements) and finding the maximum entry. So O(nk)
Hash Table Practice
Congratulations! You're submitting your assignment!
Comprehension Questions