🚀 neetcode.io/ - Get lifetime access to all current & future courses I create! Btw this is the question I asked: leetcode.com/problems/insert-delete-getrandom-o1/ We actually solved it on the channel here: ua-cam.com/video/j4KwhBziOpg/v-deo.html
@@jersynumber18the code in this interview seems to be more pseudo code. When writing actual code, they will mostly have to to use hashset since Set is usually an interface in many languages and HashSet is one of the implementations
Hey Neetcode! I got the exact same question on my Adobe interview two days ago. Luckily I have been practicing from your collection of questions last few months and never missed any of your videos. I bagged my offer today!! You have literally made this happen for me. Can’t thank you enough for this day!
Hey man. I have been preparing for coding interviews for a month now. I am a self taught coder who is passionate about coding especially in AI and machine learning fields. I have just started coding for 3 months with hands on projects of over 50+ as I have quit my previous job and dedicated my full time learning coding. During the past weeks, I spent at least 4-5 hours a day on Leetcode and I have completed almost 100 problems. Now then I have started watching coding interview videos, and I feel that problems in most mock interviews seem a little too easy. So I just wanted to know from people like you who have already experienced real interviews that how difficult are there real problems?
please record more of these google mock interviews!! this questions seem so easy initially, but watching how frypan is talking aloud and saying his thought process makes me realize how the little details he says is actually valuable to you (neet) as the interviewer. now i realize why i failed my interviews so much
Watch this i was thinking maybe we could store in an array..but wont store in array initially..we would then use a function to check the array if the value was already store there.. if yes then use the value position to store the new figure.. if no then use the new value as storage.. I would also use a function to get a random number using the array limitation then use that random number to return a value from set.
@@danielbrown7534 searching in an array is O(n). Unless the array is sorted, in which case you can use binary search and it becomes O(logn). But to be able to always search in O(logn) you have to maintain the sorted order of the array at all times, which means your insertion becomes O(n) (find the correct index to insert at to maintain sorted order: O(logn), insert and then shift all of the elements to the right of it: O(n)) and your removal is now also O(n) (typical array removal). The point of this question is to kind of juggle all of these limitations. Every time you choose a data structure to optimize one of the operations, something else becomes more expensive. Nothing is free. This is why the trick is to use different data structures simultaneously, each good at different operations, and figure out how to make them work together to create an interface where all three of the exposed operations are O(1). But even this isn't free, as you're now basically doubling the memory you use (still O(n) space tho).
I find it funny that when he googled for how to get an arbitrary element from a set, he actually found Java code, and pasted it into his Python solution. And NeetCode is just like "great".
@@yatintyagi4366 wouldn't the if statement be more clear since the value isn't in the set to begin with? Thus if changed in the future... it'll still run correctly?
There were 4 people in my coding interview a few months ago. They were quite friendly with me, though. I had to code C++ in MS Word, which was a pain the neck. Even the easiest questions become hard because of tension. In addition to that, time flies when you are under pressure because you are trying to come up with an answer in your head and trying to word it properly.
Things I'm starting to realize every developer needs to do during an interview. Ask tons of questions before even thinking about coding, even if they seem obvious. If the easiest way to think of a question is in one-time complexity odds are they are hinting at the complexity they want in the description of the question.
Gah, what people watching this might be missing out on is the anxiety, and the difficulty between coding and talking through the code. I sat here correcting him as he went, but also remembered how much I stumbled over trivial stuff. It's so nerve racking.
Thanks so much @NeetCode for doing this. I think this video is pretty realistic (except for the way @FryingPan talks 😂) compared to the other mock interview videos online! Helped me relate a lot being an interviewee. Looking forward to more such videos!! Keep inspiring with your good work 😃
This is a really inspring mock interview. Learn a lot from this standard mock interview. Please upload more similar interviews including system design mock interview.
My man was coding in Python and searched how to get the first element of a set in Java. Genius. And he said it so confidently too: "I got it sir! I got it!" 39:25 😂 It's "next(iter(mySet))" by the way. And thank you for the video, it was really nice!
Theres something neither of you caught. When you remove elements from the set that keeps track of indices and when there's only one element in the set, you are left with an empty set. What you want is to get rid of the map entry altogether. So you should check if it's the last element, and if it is, del that entry. Also, he mentions changing to a set instead of an array because when he chose the array first, he was using the first index and then he probably thought "wait.. now if I delete the first index I have to shift all the remaining ones to the left". Well actually you can simply use the last one instead of the first by using "pop", and so you can still use the array
@@massalkhii This actually isn't true. since we are only ever pushing values into the values array, the index of the last value in the value array will always be the last index in that values index array. This stays true whether there are duplicate last values or not. Using a set here isn't better really.
@@Biggyweezer69 I realized I was digging deep, while even the obvious case of having a duplicate of the last element, it raises an error (in the final code of the guy in the video)
in the 30:28, the follow up question is to allow array to store duplciate. The follow up seems to be simplified, in general, it may ask while allowing to store duplicate values, what is to make each number to has the same probility in getRandom(say 1,2,2,2,2,2,3), 1 and 2 and 3 has the same 1/3 probility to be returned.
I would implement the Get(bool random, Enum input) first, then when implementing the Insert, pass each iteration to Get() with random false. If it returns a value then dont insert it as its duplicate. To get random you jusst need to set random to true. Then the remove is straight forward.
Thank you, it was great! Just a heads-up, I’ve found a small bug. If you do the following: s = Store() s.insert(1) s.remove(1) s.remove(1) The issue arises because the check is only `if value not in self.map` but it should be `if len(self.map[value]) > 0` to correctly handle multiple removals.
That's cool. I've learned a lot during the Mock test interview. Understand deeply the way the interviewer asked the candidate and the way of thinking to solve the problem.
17:55 When he realized what's the right way, and you see the smile, that's why we love programming. That's why ones, who think "I want to be a programmer because it means I get a lot of money" always fail. Whoever loves this, feel fun when programming is always the one who reaches his goal.
@@christosgran5486 I'm kinda of a newbie here but here is what I think that would be the answer to your question. An array is on going data structure meaning that it only moves forward. That means if we want to search again, we have to go through all the elements one at a time and this will take extra time when we're removing an element. By moving the element we want to remove to the end of the array, we can simply remove it without going through every element in that array like this: Remove Arr[length - 1]; I think this is a good solution that will improve the complexity like he said.
@42:43 To make the code thread safe, you do NOT need to add any locks for the read operations, so get_random(self) function will not need thread safety, only the write operations (insert/remove) will need it
i'm not really sure about that but inserting in a hashmap, will, at some point, result in a reallocation of the elements, since under the hood you store the elements inside an array indexed using a hash function. Usually you allocate more space when you have the array half full or 3/4. A data structure with an array that has a little buffer and gets reallocated when half full will get you the same time complexity, i suppose. Also when deleting, yes, when you delete an element from the end of the array you don't need to push elements around to fill a void, but you still retain that memory. After some delete operations you would want to release that memory by realloc-ing everything in a smaller array and freeing the old memory.
By the way, his original solution was great. We could still use a set, to insert and remove in O(1). As for the get_random method, he should have used 'random.randint(0, len(self.values)-1)' to get a random index and then get it using self.values[index].
To get a random number using a set, I believe you can pop() a value and add() it back in after so it is a 2 0(1) solution 18:45. Please correct me if I am mistaken, I’m not an expert
9:45 Being someone that first learned about lists in C, removing and adding was truly something, seeing this makes me have high hopes in my future coding career lol.
There is an obvious bug when the value we are going to remove is equal to the last element in values list, in which case adding the index before removing will end up losing the index.
You mentioned that you don’t actually use Google docs for coding interviews? What do you use a Google IDE? How do you draw out solutions on a Google online interview?
it's not exactly "Google docs" but it's basically the same thing, just with syntax highlighting and no autocomplete (or there wasn't when I interviewed)
Pro tip to people interviewing. Don’t talk like this guy. Don’t swear. Don’t quiz the interviewer. Finding the optimal solution is a must, but they’re also deciding if they want to work with you. Some crude banter can give the wrong signal, and there’s zero advantage to you in risking it. Be polite. Don’t be cocky. Every grading rubric has score around cultural and team fit. Just FYI.
The code in follow up has a bug... In the remove function, when the size of self.map[value] equals to zero, we need to delete the empty set like `del self.map[value]`. Otherwise, next remove call for same element will cause an error.
I'm pretty proud I could think of using the hashmap with the array right away. But I had the same doubt as him, how to get avoid the O(n) removing an item from the array an updating the index at every key in the hashmap
Something important is the use of descriptive names for your variables, because in this case without any previous context you won’t figure out what’s the function of “map” or “values”variables.
thats actually a great point! I guess in this case what kind of variable names would you use? Bcuz i cant think of what to call them other than values either lol
Another important question that could have been asked is the range of possible values to be inserted, it can influence a lot the final solution complexity!
I think for removal function, you can just use the insert function with a small update so it can be able to return the position of the already existing value, overwrite the value and put the last one in it, correct guys?
please @NeetCode if your are watching .. so on the first part my approach was to solve everything through set as set gives everything like adding, remove with num and generating a random number from set (we can add it again on the next line) plus on the second part where duplicates are allowed .. we can change it to hashmap so that on removing if the values aren't zero we can just remove the iteration count of the numbers or pop the number otherwise when iteration count goes 0. need help in clarifying it .. thanks for experience though
I feel that moment when you said "do you really talk like this in real interviews" and he replied "what's wrong with how I talk" Your reaction was "nothing" 🤣🤣 I felt that man 🤣🤣
He should have been honest there! Judging from the comments he's kinda acting; but besides your ability to solve problems, it's also super important to be pleasant to work with. One can be funny and entertaining while staying humble and mindful.
got my first interview on wednesday and this video equally relaxes and terrifies me 😅 Trouble is I cannot think aloud. I can think, then explain, but that takes more time. Hopefully not an issue, but we shall see 🤞
Saw this Video yesterday, got random recommendation and today i got this question on leetcode daily challenge question, i was shocked about it but the explanation was so good i did the question in one go
Omg that was so fun I really enjoyed the vid and it's perfect too because I have a final round coding interview later this week! You guys should collab more often, that would be such good content!
Why not directly using a list, am I missing something? class ElementManager: def __init__(self): self.elements = [] def add_element(self, element): if element in self.elements: return self.elements.append(element) def remove_element(self, element): try: self.elements.remove(element) except ValueError: print(f"Element '{element}' not found.") def get_random_element(self): if not self.elements: return None return random.choice(self.elements)
So funny. I am still struggling with leetcode by just finishing the first 200. And I did not have much interview experience. The video makes me feel like we are all human beings.
Awesome video! Quick question: What's the point of changing the last item of the array to the value to be deleted if you're just going to pop it anyway? Can't we just remove that extra step?
Deleting from an array is not generally O(1). If you delete from the middle of the array, say at index i, you have to shift indexes i + 1, i + 2, ... etc. left one index which takes O(n) time.
Those sort of questions are a little bit odd, because the "reduce complexity" always boils down to the data structure behind and there basically a lot of useful stuff was already invented, so you wouldnt hire someone, who can recreate such a structure from scratch, because that's totally not part of the daily business.
25:18 missing self.values[index] = last_val I don’t believe he switched the two values correctly. He moved the needed value to the end and updated the set accordingly, but I don’t see him making the last_val be at the index as the removed value. Meaning he just popped the removed element off but kept it earlier in the list and lost that edge value. Please correct me if I’m wrong 😅
Idk if he knew this, but he could just store the numbers in a dictionary by converting it into a str using the random choice on it. If it does the random choice in the dictionary, it would take only the keys as the list and get a random str number
Should we delete empty value-indices pairs from the map as we are removing? It seems to me that leaving empty sets around not only waste space but also breaks the if statement above.
🚀 neetcode.io/ - Get lifetime access to all current & future courses I create!
Btw this is the question I asked: leetcode.com/problems/insert-delete-getrandom-o1/
We actually solved it on the channel here: ua-cam.com/video/j4KwhBziOpg/v-deo.html
Yeah I'd like to see that 🤩
I became homeless. I am depressed
yeees
It seems only fair and right with the world. I mean if you prefer balance in the universe rather than chaos.
Hi, sorry isn't duplicate problems easily solved with sets, as this doesn't allow duplicates, and it's call is already random.
"If there is a problem, just throw a hashmap at it."
- someone really smart
Funny how true this is
@@subhrajyotisen7218 why not Hashset here ? until follow up question
@@jersynumber18the code in this interview seems to be more pseudo code. When writing actual code, they will mostly have to to use hashset since Set is usually an interface in many languages and HashSet is one of the implementations
@@jersynumber18 you need to store the index as the value.
Works all the time
“In your real interviews, do you talk the same way..?” LMAO that is the question I wanted to ask lol
It was obviously a frank discussion between friends
@@pinecedar180 but you can be pretty frank just don't be unprofessional
I'm 5 min into the video and I wanted to ask that
@decomush do you think you're superior for being socially inept and not realizing these are 2 friends ?
@@WoWUndad not really, just a fair question to help out the guy
Hey Neetcode! I got the exact same question on my Adobe interview two days ago. Luckily I have been practicing from your collection of questions last few months and never missed any of your videos. I bagged my offer today!! You have literally made this happen for me. Can’t thank you enough for this day!
Hi, is adobe allowing remote work?
Congrats ma boi
Congrats nigg*
what collection of questions you are talking about? Neetcode 150?
Hey man. I have been preparing for coding interviews for a month now. I am a self taught coder who is passionate about coding especially in AI and machine learning fields. I have just started coding for 3 months with hands on projects of over 50+ as I have quit my previous job and dedicated my full time learning coding. During the past weeks, I spent at least 4-5 hours a day on Leetcode and I have completed almost 100 problems. Now then I have started watching coding interview videos, and I feel that problems in most mock interviews seem a little too easy. So I just wanted to know from people like you who have already experienced real interviews that how difficult are there real problems?
please record more of these google mock interviews!! this questions seem so easy initially, but watching how frypan is talking aloud and saying his thought process makes me realize how the little details he says is actually valuable to you (neet) as the interviewer. now i realize why i failed my interviews so much
Watch this i was thinking maybe we could store in an array..but wont store in array initially..we would then use a function to check the array if the value was already store there.. if yes then use the value position to store the new figure.. if no then use the new value as storage.. I would also use a function to get a random number using the array limitation then use that random number to return a value from set.
@@danielbrown7534 That wouldn't meet the time complexity requirements.
@@danielbrown7534 searching in an array is O(n). Unless the array is sorted, in which case you can use binary search and it becomes O(logn). But to be able to always search in O(logn) you have to maintain the sorted order of the array at all times, which means your insertion becomes O(n) (find the correct index to insert at to maintain sorted order: O(logn), insert and then shift all of the elements to the right of it: O(n)) and your removal is now also O(n) (typical array removal).
The point of this question is to kind of juggle all of these limitations. Every time you choose a data structure to optimize one of the operations, something else becomes more expensive. Nothing is free. This is why the trick is to use different data structures simultaneously, each good at different operations, and figure out how to make them work together to create an interface where all three of the exposed operations are O(1). But even this isn't free, as you're now basically doubling the memory you use (still O(n) space tho).
I find it funny that when he googled for how to get an arbitrary element from a set, he actually found Java code, and pasted it into his Python solution. And NeetCode is just like "great".
😂
I 😂😂😂
😂😂😂😂😂😂😂😂😂
I didn't notice that, can anyone paste the timestamp. I watched the video twice still didn't see it
39:19@@tahashakeel
for python folks, removing an item from set, which isn't in the set , using remove() method will result in error, so use discard() method.
Just use pop
or just use an if statement
@@yatintyagi4366 wouldn't the if statement be more clear since the value isn't in the set to begin with? Thus if changed in the future... it'll still run correctly?
Agree smart move
@@danielsank2286 pop removes a random value from the set, not the required one
There were 4 people in my coding interview a few months ago. They were quite friendly with me, though. I had to code C++ in MS Word, which was a pain the neck. Even the easiest questions become hard because of tension. In addition to that, time flies when you are under pressure because you are trying to come up with an answer in your head and trying to word it properly.
that is intense asl my friend😭
Things I'm starting to realize every developer needs to do during an interview. Ask tons of questions before even thinking about coding, even if they seem obvious. If the easiest way to think of a question is in one-time complexity odds are they are hinting at the complexity they want in the description of the question.
I just hate to ask questions for the sake of asking questions though...
@@MichaelButlerC frfrfr
@@MichaelButlerCyou’re going to have to do that during the actual job
This is the first time I watched a 40 minute video. Real fun, we want more of these!
Gah, what people watching this might be missing out on is the anxiety, and the difficulty between coding and talking through the code. I sat here correcting him as he went, but also remembered how much I stumbled over trivial stuff. It's so nerve racking.
True, IMHO I think he should ask all the possible questions. To ease the doubt.
Thanks so much @NeetCode for doing this. I think this video is pretty realistic (except for the way @FryingPan talks 😂) compared to the other mock interview videos online! Helped me relate a lot being an interviewee. Looking forward to more such videos!! Keep inspiring with your good work 😃
well did you get the job?
@@davidtran9455 😭
Been watching Mock interview sessions for a long time, but this is by far the most enjoyable session for my all time :)
"i have ocd and this is pissing me off"
My interviewer: get tf out then 😊
This interview made me realize that I can do it too. Thanks, Neetcode
the last part you ask 'do you talk like this in real interview?' and then 'nothing' really make me laugh
The collab we waiting for..🔥
The only 2 coding channels i subscribed and getting that collab is awesome..
This is a really inspring mock interview. Learn a lot from this standard mock interview. Please upload more similar interviews including system design mock interview.
The snarky comments while Neetcode remained mute was hilarious
My man was coding in Python and searched how to get the first element of a set in Java. Genius. And he said it so confidently too: "I got it sir! I got it!" 39:25 😂
It's "next(iter(mySet))" by the way.
And thank you for the video, it was really nice!
Theres something neither of you caught. When you remove elements from the set that keeps track of indices and when there's only one element in the set, you are left with an empty set. What you want is to get rid of the map entry altogether. So you should check if it's the last element, and if it is, del that entry.
Also, he mentions changing to a set instead of an array because when he chose the array first, he was using the first index and then he probably thought "wait.. now if I delete the first index I have to shift all the remaining ones to the left". Well actually you can simply use the last one instead of the first by using "pop", and so you can still use the array
excellent observation
what if you want to remove the number first in the list, you can't use pop() instead?
It's remove by value, so it's worst-case linear time for an array.
@@massalkhii This actually isn't true. since we are only ever pushing values into the values array, the index of the last value in the value array will always be the last index in that values index array. This stays true whether there are duplicate last values or not. Using a set here isn't better really.
@@Biggyweezer69 I realized I was digging deep, while even the obvious case of having a duplicate of the last element, it raises an error (in the final code of the guy in the video)
in the 30:28, the follow up question is to allow array to store duplciate. The follow up seems to be simplified, in general, it may ask while allowing to store duplicate values, what is to make each number to has the same probility in getRandom(say 1,2,2,2,2,2,3), 1 and 2 and 3 has the same 1/3 probility to be returned.
Can we get more interviews like this one? It was really helpful. Thanks!! 🙂
??
That adding array to value for duplicate values was amazing, always had that doubt but I found the answer today. Thank you for the post
the collab i didnt know i need 😂 frying pan is too funny lol. Great hint from Neetcode too, just enough to nudge him into revelation
I would implement the Get(bool random, Enum input) first, then when implementing the Insert, pass each iteration to Get() with random false. If it returns a value then dont insert it as its duplicate. To get random you jusst need to set random to true. Then the remove is straight forward.
In the follow-up, you could have just chosen the last element from the list to swap self.map[value][-1] and used pop() to remove it after the swap.
There is no indexing in sets so self.map[value][-1] wouldt work and then he also pasted some wrong java code in
Thank you, it was great!
Just a heads-up, I’ve found a small bug. If you do the following:
s = Store()
s.insert(1)
s.remove(1)
s.remove(1)
The issue arises because the check is only
`if value not in self.map`
but it should be
`if len(self.map[value]) > 0`
to correctly handle multiple removals.
That's cool. I've learned a lot during the Mock test interview. Understand deeply the way the interviewer asked the candidate and the way of thinking to solve the problem.
None of my coding interviews for internships have been anywhere near this easy
but the mock interviews from faang are - its a mock not a real assessment- its used to get a feel for the format and UMPIRE application
@@harryzhu Arent mocks meant to be harder than the potential interview? So you're more than prepared.
17:55 When he realized what's the right way, and you see the smile, that's why we love programming.
That's why ones, who think "I want to be a programmer because it means I get a lot of money" always fail. Whoever loves this, feel fun when programming is always the one who reaches his goal.
can you explain why moving it to the end of the array, before removing it, changes the complexity of the code?
@@christosgran5486 I'm kinda of a newbie here but here is what I think that would be the answer to your question.
An array is on going data structure meaning that it only moves forward. That means if we want to search again, we have to go through all the elements one at a time and this will take extra time when we're removing an element.
By moving the element we want to remove to the end of the array, we can simply remove it without going through every element in that array like this:
Remove Arr[length - 1];
I think this is a good solution that will improve the complexity like he said.
i was able to come up with similar solution. I'm happy lol. I was thinking along with him
It was really a pretty good coding mock interview. Amazing, thank you a million times Neet!
@42:43 To make the code thread safe, you do NOT need to add any locks for the read operations, so get_random(self) function will not need thread safety, only the write operations (insert/remove) will need it
Got same question in my Amazon SDE winter internship interview.
Unironically got a very similar question for Amazon SDE position
This was like actually really awesome. I felt like I was solving the problem with him!
love the concept, if you need another person to mock interview I would be happy to do one. I am an ex Quant trader now studying for algo / CS jobs.
Are ya still down? :)
Thanks!
Thank you so much!!
i'm not really sure about that but inserting in a hashmap, will, at some point, result in a reallocation of the elements, since under the hood you store the elements inside an array indexed using a hash function. Usually you allocate more space when you have the array half full or 3/4. A data structure with an array that has a little buffer and gets reallocated when half full will get you the same time complexity, i suppose.
Also when deleting, yes, when you delete an element from the end of the array you don't need to push elements around to fill a void, but you still retain that memory. After some delete operations you would want to release that memory by realloc-ing everything in a smaller array and freeing the old memory.
The collab I was waiting for years. You guys are prob my fav swe youtubers
By the way, his original solution was great.
We could still use a set, to insert and remove in O(1). As for the get_random method, he should have used 'random.randint(0, len(self.values)-1)' to get a random index and then get it using self.values[index].
Exactly what I was thinking for my original design
To get a random number using a set, I believe you can pop() a value and add() it back in after so it is a 2 0(1) solution 18:45.
Please correct me if I am mistaken, I’m not an expert
Love the "Now let me ask you another question" at the beginning haha. Very inciteful video btw
9:45
Being someone that first learned about lists in C, removing and adding was truly something, seeing this makes me have high hopes in my future coding career lol.
I love this, frying pan makes coding interviews fun
There is an obvious bug when the value we are going to remove is equal to the last element in values list, in which case adding the index before removing will end up losing the index.
Awesome. I learned so much about how a coding interview looks like. Thank you!!
You mentioned that you don’t actually use Google docs for coding interviews? What do you use a Google IDE? How do you draw out solutions on a Google online interview?
it's not exactly "Google docs" but it's basically the same thing, just with syntax highlighting and no autocomplete (or there wasn't when I interviewed)
yea its kind of a modified version of google docs (at least that's what it looked like) with syntax highlighting
Pro tip to people interviewing. Don’t talk like this guy. Don’t swear. Don’t quiz the interviewer. Finding the optimal solution is a must, but they’re also deciding if they want to work with you. Some crude banter can give the wrong signal, and there’s zero advantage to you in risking it. Be polite. Don’t be cocky. Every grading rubric has score around cultural and team fit. Just FYI.
FUC.K
The code in follow up has a bug...
In the remove function, when the size of self.map[value] equals to zero, we need to delete the empty set like `del self.map[value]`.
Otherwise, next remove call for same element will cause an error.
Neet code Please do conduct whenever possible it helps the everyone a lot of Learning. Thank you so much...
This is prolly the best channel out there for ds algos!!!
Big fan of neetcode ❤️ just want to thank for all the amazing content you post in your channel... Thank you 🙏 love from India
Priceless video!! Thank you so much!!
I'm pretty proud I could think of using the hashmap with the array right away. But I had the same doubt as him, how to get avoid the O(n) removing an item from the array an updating the index at every key in the hashmap
Never thought interviews would be that funny, cool !
Bro why didn't you upload this sooner I had my interview yesterday :,)
Something important is the use of descriptive names for your variables, because in this case without any previous context you won’t figure out what’s the function of “map” or “values”variables.
thats actually a great point! I guess in this case what kind of variable names would you use? Bcuz i cant think of what to call them other than values either lol
@@mannyb096 removedInt
I thought we were about to get a face reveal 😂
Maybe on part 2... lol
Seriously man..i so badly want to see neetcode.. in my mind he is like moriarty frm sherlock show... coz thats how brilliant neetcode is.😊😊😝
@@NeetCode Is Techlead in the thumbnail
Me too..neetcode, make it happen!
Neetcode looks like an angel for sure
So many headaches to end up in a cubicle Monday to Friday.
May as well deploy this knowledge to develop independently and get all the benefits.
Nice video, I can feel the pressure of the interviewee by his word and face
The collab I didn't know I needed ..... 🙃
Another important question that could have been asked is the range of possible values to be inserted, it can influence a lot the final solution complexity!
Frying pan is hilarious though he is not explicitly trying to make fun of the situation.
I think for removal function, you can just use the insert function with a small update so it can be able to return the position of the already existing value, overwrite the value and put the last one in it, correct guys?
my semester exams are tomorrow and here im watching this at 4 am.Man we really are cooked
Funniest, energetic interview I have ever seen , I want confidence like this😅🤣
please @NeetCode if your are watching .. so on the first part my approach was to solve everything through set as set gives everything like adding, remove with num and generating a random number from set (we can add it again on the next line) plus on the second part where duplicates are allowed .. we can change it to hashmap so that on removing if the values aren't zero we can just remove the iteration count of the numbers or pop the number otherwise when iteration count goes 0.
need help in clarifying it .. thanks for experience though
I feel that moment when you said "do you really talk like this in real interviews" and he replied "what's wrong with how I talk"
Your reaction was "nothing" 🤣🤣 I felt that man 🤣🤣
He should have been honest there!
Judging from the comments he's kinda acting; but besides your ability to solve problems, it's also super important to be pleasant to work with. One can be funny and entertaining while staying humble and mindful.
like we say in chile, "que cagon eres" she should tell him with no fear of hurting him lol
This is a great interview question. Easy to understand, lots of tradeoffs.
got my first interview on wednesday and this video equally relaxes and terrifies me 😅
Trouble is I cannot think aloud. I can think, then explain, but that takes more time. Hopefully not an issue, but we shall see 🤞
Saw this Video yesterday, got random recommendation and today i got this question on leetcode daily challenge question, i was shocked about it but the explanation was so good i did the question in one go
Invigorating! Great questions all around, even greater thoughts and solutions!
how did I get this recommended just before the daily leetcode question became this today
Omg that was so fun I really enjoyed the vid and it's perfect too because I have a final round coding interview later this week! You guys should collab more often, that would be such good content!
How did it go?
Why not directly using a list, am I missing something?
class ElementManager:
def __init__(self):
self.elements = []
def add_element(self, element):
if element in self.elements:
return
self.elements.append(element)
def remove_element(self, element):
try:
self.elements.remove(element)
except ValueError:
print(f"Element '{element}' not found.")
def get_random_element(self):
if not self.elements:
return None
return random.choice(self.elements)
It’s because removing from a list is O(n) and the entire point was to make it O(1), that’s why he switched the elements and popped the last one
So funny. I am still struggling with leetcode by just finishing the first 200. And I did not have much interview experience. The video makes me feel like we are all human beings.
I never thought i needed this collab until now...
You never know what u need until its too late. Thats why ur broke.
Awesome video!
Quick question:
What's the point of changing the last item of the array to the value to be deleted if you're just going to pop it anyway? Can't we just remove that extra step?
Deleting from an array is not generally O(1). If you delete from the middle of the array, say at index i, you have to shift indexes i + 1, i + 2, ... etc. left one index which takes O(n) time.
I've been working as a software developer and I have had to make use of a hash map exactly once in my life
I like how he said using google docs is stupid and it pisses me off in an interview 😂
this was really informative and fun at the same time. thanks NeetCode.
pretty decent easy-med level q to ask, will use in my own new hire interviews as it makes for good discussion!
Those sort of questions are a little bit odd, because the "reduce complexity" always boils down to the data structure behind and there basically a lot of useful stuff was already invented, so you wouldnt hire someone, who can recreate such a structure from scratch, because that's totally not part of the daily business.
25:18 missing self.values[index] = last_val
I don’t believe he switched the two values correctly. He moved the needed value to the end and updated the set accordingly, but I don’t see him making the last_val be at the index as the removed value. Meaning he just popped the removed element off but kept it earlier in the list and lost that edge value.
Please correct me if I’m wrong 😅
Hiring a cocky person is quite dangerous no matter how smart they are.
U can just return a random number in range of the index and return the value at that index
I am happy to know I almost guessed all the approach correctly!!
disqualified for cheating 😂love how calm NeetCode is
I think the end solution doesn't consider removing a value from a map that has only one index
hey hey dude, thanks for the vidos!! now a cool mood for the whole day :)))
Enjoyed this video so much i watched on both your channels. Can you make a series of this?
Well shown who is a front-end developer, thanks
Awesome, more of that would be highly appreciated
I've 100% coded in Google Docs for Google interviews before. It was painful. I turned off the auto-correct settings right away
This is so clutch. I have a Google interview in 2hrs
How did it go?
It’s so whatnow?
Idk if he knew this, but he could just store the numbers in a dictionary by converting it into a str using the random choice on it. If it does the random choice in the dictionary, it would take only the keys as the list and get a random str number
Should we delete empty value-indices pairs from the map as we are removing? It seems to me that leaving empty sets around not only waste space but also breaks the if statement above.
I agree.
Yes. That's something they missed
42:27 i'm dead 🤣 Neetcode, thanks for the video, i want to be smart like you