Conversation
CheezItMan
left a comment
There was a problem hiding this comment.
Nice work Anya, I had some feedback regarding space/time complexity. Hopefully my feedback here is clear. Let me know if it's not and I'm happy to try to clarify.
| # Time Complexity: O(n * m) n is the length of the array, m is the max length of string within the array. | ||
| # Could pull chars method to run first on each element of strings, for O(n) n being the longest string or array. | ||
| # Space Complexity: O(n) | ||
|
|
||
| def grouped_anagrams(strings) |
There was a problem hiding this comment.
👍 But the time complexity is O(n) if the strings are limited in size (so you can ignore the sort because it's limited in size), or O(n * m log m) where m is the length of the strings, if the string is not limited in size.
| # Time Complexity: O(n) n is list length | ||
| # Space Complexity: O(n^2 * k) is that right? | ||
| def top_k_frequent_elements(list, k) |
There was a problem hiding this comment.
👍 The time complexity is O(n log n) because you have an O(n) loop (the list.each loop) then a sort (O(n log n)), and followed by another loop which goes k times where k <= n.
So the time complexity is O(n + n log n + k) ==> O(n log n) because n log n is the dominate term. It's larger than n and k.
In the space complexity you're creating a hash O(n), a sorted hash O(n), and k_most_common_ele. So O(n + n + k) and so the final space complexity is O(n).
Hash Table Practice
Congratulations! You're submitting your assignment!
Comprehension Questions