Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

C15 - Katrina K #33

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

SterlingSunshine
Copy link

Hash Table Practice

Congratulations! You're submitting your assignment!

Comprehension Questions

Question Answer
Why is a good Hash Function Important? It reduces the number of collisions with data and maintains the key useful O(1) look-up functionality.
How can you judge if a hash function is good or not? The number of collisions is minimal or zero
Is there a perfect hash function? If so what is it? With infinite storage, a perfect hash would have a unique key for every value in the data set.
Describe a strategy to handle collisions in a hash table If the collisions are intentional, the value can be a list (like in the anagrams problem). Otherwise, one strategy may be to move to the next free key so there is always a one-to-one relationship between values and keys.
Describe a situation where a hash table wouldn't be as useful as a binary search tree If the order of the data is important or the order is often changing with the addition/subtraction of data. For example, finding the minimum value in a dataset would be tedious in a hash table of those values but trivial in a BST.
What is one thing that is more clear to you on hash tables now Hashing implementations are incredibly complicated the larger and more complicated the dataset is.

Copy link

@CheezItMan CheezItMan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work Katrina. Just a few comments on time complexity. For some reason Learn isn't processing the repo you submitted so I can submit a score.

Comment on lines 2 to 7
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 log m)
Space Complexity: O(n)
"""

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 I would say either O(n) for time complexity if words are of limited length or O(n * m log m) if the words can be of arbitrary length because you're processing n words and sort each word of potentially m letters.

Comment on lines 24 to 30
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: At least O(n) assuming that max() is an O(1) look up but I strongly suspect it isn't
Space Complexity: At least O(n + k)
(Not sure about the big O here becuase I'm not certain how max works in this case)
"""

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 Because you have a loop going k times and each time you find a maximum of the n elements. I would say this is O(nk)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants