This is a pretty genius way to start approaching algo problems because it's way easier to look at constraints to determine the required time complexity than it is to look at the problem description and determine what algorithms or data structures fit
@@sadboy-xx6gh obviously. We also never buy a kinder surprise eggs with a toy we already have! Fr tho, people getting IT jobs should know this from a fucking college, among other fundamentals. Not as a 'crazy hack' for code monkeys to ace leet code...
in an actual interview even the interviewer might not know the correct input size, and wrong assumptions/guesswork will give you a much more lenient (smaller) input size leading to a more suboptimal approach than the interviewer is expecting (e.g. quadratic instead of linear)
Why not ask for the constraint? Constraint is part of the problem definition, without which a problem is not complete. And requirement gathering is a key skill for engineers and something interviewer would want to evaluate on.
This is a common question so want to make a special note here: - In an online coding assessment, you can obviously use this technique. - In an in-person interview, you should always ask for the constraints up front , as they are a part of the problem definition. The difference between n=10 and n=10,000 can entirely changes the problem. And requirement gathering is a key part of an engineer's skill set. Also make sure you know how to use the patterns: th-cam.com/video/RYT08CaYq6A/w-d-xo.html
But the issue with this approach is that in the onsite interview, interviewer won't tell you the constraints. You need to find out the most optimal approach based on the problem description not the constraints.
Well usually you practice enough that it simply does not matter. Also, at a certain point you use the constraints not so much as a guide, but as a what do they want here? Like, are they forcing me to work for the solution or is this an easy problem that let's me implement some other worse version. For example, longest common substring's dp vs suffix stuff solution (e.g. suffix array)
Hey, can you make something where more of these constraints or the inputs/language hints us to use specific algorithms, like if its asked minimize the maximum sum, we use binary search or something same like that???
What's the point of this. You are not solving LeetCode problem to game their system. You are trying to prepare for the interviews mostly or at least I am. So even though the platform accepts quadratic or even exponential solution, what's the point of it. Interviewer will obviously expect a better solution.
To quote the classic math book "How to Solve It" by George Pólya: "The conditions of the problem contain the essential data. If you analyze the conditions carefully, they will suggest the way to the solution." This is exactly how you are supposed to solve a problem - using whatever information you have in the problem description. This is not gaming the system. You need this knowledge to deduce what to do next. A reasonable interviewer will understand this. If not, you probably don't want that job anyways cuz they are probably not good engineers or collegues. Also LeetCode is usually stricter than real interviews. If you can solve it to pass LeetCode, you can pass the interview.
@@algo.monster I understand what u mean, but this quote does not match the situation. The size of the data does not determine the most optimal solution. The runtime limit is something set by the coding platform and is not applicable to every interview (especially not applicable to industry or academia). TLE might not even exist as long as you don’t run out of memory. This only applies to Leetcode and similar coding platforms. They won’t always give you a runtime limit in interviews. Some companies also won’t give you any constraints or a TLE, they’ll just analyze how you handle unknown bounds and scenarios while still keeping an optimal algorithm. This is also bad practice for learning algorithms and data structures if you want to get into academia or actually build larger systems at work. This is only a good “hint” if u’r a beginner to leetcode.
That's a very useful way of solving problems in OAs and CP challenges but in an interview, you cannot rely on this trick. A lot of the times, the interviewer will not mention a specific constraint and would ask you to come up with as many solutions as you can. Starting from the bruteforce to as optimal as it gets. Therefore it is more important to learn problem patterns, you should only come to the constraint part when you're confused between two approaches.
You should always ask for the constraints upfront as it's part of the problem definition in an in-person interview. Having n=10 vs n=10000 completely changes the problem. It also demonstrate your communication skills since requirement gathering is a key skill for an engineer.
This is the first thing you do in a problem. What if a problem is easy because of input size and you're optimizing nothing, that's just premature optimization. For example, if you have a dataset of 100 rows and you need to implement some algo which is naively N^2 but you spend useless time making it O(N) and more complex, in any case that's a bad idea. Leetcode says a problem is easy/med/hard and that just shifts your thinking.
bele bele ta constraints guda deinathae anya online coding platform re. setebele tike sahibaku pade aau. aau interview re ta semane kuhantini. pacharile hi kahibe nale kahibe nahi kichhi constraints. seithi fasi jiba. jie true coder sei karipariba.
Thank you for teaching the first concept you need to learn before starting Competitive Programming but people are so dumb they don't pay attention to even that one
This doesn't work all the time, cause there is a statistical aspect too that's taken into consideration. If more and more submissions are in O(n) rather than O(nlogn), your submission will be declined even if it was accepted before.
It doesn't work this way, but there's a probalistic element (I guess it depends on runner to which your submission is assigned and its load). So sometimes you can try to resubmit the same solution to pass
I don't think that's how it works. Timing is not dynamic adjusted. Like @fakenullie said the same solution could have different runtime. It's not stable. This is from my friend who worked as ops for LeetCode.
@@algo.monster I faced this with a few questions. When I attempted to submit the same code two years later it just kept failing. Also problems also change from hard to medium. I was watching some video by neet ode, where in the video it was hard but the problem in the site was a medium. I presumed that as acceptances increased, it changed
It's my cloned voice, which makes syncing with the animation easier. This was one of our earlier videos, and we were still learning, so the quality isn't the best haha. Thanks for sticking with it anyway!
But in some cases due to this we overthink to optimise the time complexity. I think this fails and make us overthink specially in case of O(N) ARMOTISED complexity
The point is that you can use the constraints to rule out runtimes that couldn't possibly be accepted by Leetcode. For example, if the input size is up to 1 million, you can instantly rule out any strategy that is as slow or slower than O(n^2), such as a 2D dynamic programming approach.
I dont think the aim is to just pass the leet code question. Typically if you use brute force in an interview the interviewer would just ask you "is there any other way to solve this?" And if brute force is all that you did its not going to end well
Full constraint to algo mapping and code examples here: algo.monster/problems/runtime_summary
This is a pretty genius way to start approaching algo problems because it's way easier to look at constraints to determine the required time complexity than it is to look at the problem description and determine what algorithms or data structures fit
Thanks! Yes, it is, indeed!
Goodhart's Law is expressed as: “When a measure becomes a target, it ceases to be a good measure.”
But, I guess, it is what it is.
hahaha, yes indeed. LeetCode-style interviews is just a game we have to play to get in the door.
You guys didn’t know this ??
Well if you knew, you wouldnt be watching this video now, would you?
😂😂😂😂😂😂😂@@sadboy-xx6gh
@@sadboy-xx6ghha got 'em!
@@sadboy-xx6gh obviously. We also never buy a kinder surprise eggs with a toy we already have!
Fr tho, people getting IT jobs should know this from a fucking college, among other fundamentals. Not as a 'crazy hack' for code monkeys to ace leet code...
Yeah how can you not see the pattern of time limit exceed and constraint
Damnnnnn, this is soooooo underrated man. Love such insights! Keep em coming
Glad it helps! And Zlatan is the best haha
in an actual interview even the interviewer might not know the correct input size, and wrong assumptions/guesswork will give you a much more lenient (smaller) input size leading to a more suboptimal approach than the interviewer is expecting (e.g. quadratic instead of linear)
Why not ask for the constraint? Constraint is part of the problem definition, without which a problem is not complete. And requirement gathering is a key skill for engineers and something interviewer would want to evaluate on.
This is a common question so want to make a special note here:
- In an online coding assessment, you can obviously use this technique.
- In an in-person interview, you should always ask for the constraints up front , as they are a part of the problem definition. The difference between n=10 and n=10,000 can entirely changes the problem. And requirement gathering is a key part of an engineer's skill set. Also make sure you know how to use the patterns: th-cam.com/video/RYT08CaYq6A/w-d-xo.html
Dude that was really smart wtf
ikr!
was much needed !!!!
But the issue with this approach is that in the onsite interview, interviewer won't tell you the constraints. You need to find out the most optimal approach based on the problem description not the constraints.
You can always ask for constraints. Clarifying requirement and effective communication is a key aspect of software engineer's skill set.
Interviewer would mostly probably say let's not worry about the input size, let's try to come up with optimal solution.
Well usually you practice enough that it simply does not matter. Also, at a certain point you use the constraints not so much as a guide, but as a what do they want here? Like, are they forcing me to work for the solution or is this an easy problem that let's me implement some other worse version.
For example, longest common substring's dp vs suffix stuff solution (e.g. suffix array)
It's hard coming up with what specific class of algorithms I should use :( This way is definitely useful if you ask for constraints!
I want to understand how code is executed and how does LeetCode measure the best solutions? Anybody can list some technical concepts I need to learn?
Check out this video on how leetcode works behind the scene: th-cam.com/video/hRnJxPeoZyg/w-d-xo.html
Found best one❤
Hey, can you make something where more of these constraints or the inputs/language hints us to use specific algorithms, like if its asked minimize the maximum sum, we use binary search or something same like that???
Hey yes, we have a full flowchart on how to determining what algo to use: algo.monster/flowchart
Very informative
Yeah noticed this around when I had solved 70 questions.
Do you guys ask input size constraints in interviews?
incredible insight, thank you
Glad it was helpful!
If the constraints is 5 *10^4
Using this constraints which time complexity is used and in which approach we have to code
Apparently 5*10^4 falls under O(n) or O(nLogn) category
In video he states that you hit TLE at around 10^7 operations. So anything faster than O(n^1.5), that is O(n) and O(n log n).
What's the point of this. You are not solving LeetCode problem to game their system. You are trying to prepare for the interviews mostly or at least I am. So even though the platform accepts quadratic or even exponential solution, what's the point of it. Interviewer will obviously expect a better solution.
To quote the classic math book "How to Solve It" by George Pólya:
"The conditions of the problem contain the essential data. If you analyze the conditions carefully, they will suggest the way to the solution."
This is exactly how you are supposed to solve a problem - using whatever information you have in the problem description. This is not gaming the system. You need this knowledge to deduce what to do next. A reasonable interviewer will understand this. If not, you probably don't want that job anyways cuz they are probably not good engineers or collegues.
Also LeetCode is usually stricter than real interviews. If you can solve it to pass LeetCode, you can pass the interview.
Interview deke kya kr lega ?
The difficulty already biases you though, I'm sure you look at that.
Gaming the system is the point for some people when it comes to interviewing
@@algo.monster I understand what u mean, but this quote does not match the situation. The size of the data does not determine the most optimal solution. The runtime limit is something set by the coding platform and is not applicable to every interview (especially not applicable to industry or academia). TLE might not even exist as long as you don’t run out of memory. This only applies to Leetcode and similar coding platforms. They won’t always give you a runtime limit in interviews. Some companies also won’t give you any constraints or a TLE, they’ll just analyze how you handle unknown bounds and scenarios while still keeping an optimal algorithm. This is also bad practice for learning algorithms and data structures if you want to get into academia or actually build larger systems at work. This is only a good “hint” if u’r a beginner to leetcode.
This video is a GEM.
Great video!!!
Thanks! Glad you liked it!
I always did wonder how to interpret the size constraint, thanks for the helpful video and cheatsheet
Thanks!
Welcome!
That's a very useful way of solving problems in OAs and CP challenges but in an interview, you cannot rely on this trick. A lot of the times, the interviewer will not mention a specific constraint and would ask you to come up with as many solutions as you can. Starting from the bruteforce to as optimal as it gets. Therefore it is more important to learn problem patterns, you should only come to the constraint part when you're confused between two approaches.
You should always ask for the constraints upfront as it's part of the problem definition in an in-person interview. Having n=10 vs n=10000 completely changes the problem. It also demonstrate your communication skills since requirement gathering is a key skill for an engineer.
NICE SUPER EXCELLENT MOTIVATED
Yeah. That's really good.
I'm sitting here, watching AI generated content
haha, using voice clone cuz it's easier to sync the audio with video. the content is all original
This is the first thing you do in a problem. What if a problem is easy because of input size and you're optimizing nothing, that's just premature optimization. For example, if you have a dataset of 100 rows and you need to implement some algo which is naively N^2 but you spend useless time making it O(N) and more complex, in any case that's a bad idea.
Leetcode says a problem is easy/med/hard and that just shifts your thinking.
Exactly! Engineering is all about gathering requirement and creating a solution for that requirement.
This is HUGE!!!!!!!
Nice❤
bele bele ta constraints guda deinathae anya online coding platform re. setebele tike sahibaku pade aau. aau interview re ta semane kuhantini. pacharile hi kahibe nale kahibe nahi kichhi constraints. seithi fasi jiba. jie true coder sei karipariba.
I like how math is last resort
Thank you for teaching the first concept you need to learn before starting Competitive Programming but people are so dumb they don't pay attention to even that one
True
For 10^8 inputs ? O(n) ?
O(1) or O(logN)
thx alot
Happy to help!
well that whale should have a full on clown costume and makeup. Because wherever the code is being tested at, the results are a joke XD
genius
Glad it helps!
👍👍👍
This doesn't work all the time, cause there is a statistical aspect too that's taken into consideration. If more and more submissions are in O(n) rather than O(nlogn), your submission will be declined even if it was accepted before.
It doesn't work this way, but there's a probalistic element (I guess it depends on runner to which your submission is assigned and its load). So sometimes you can try to resubmit the same solution to pass
I don't think that's how it works. Timing is not dynamic adjusted. Like @fakenullie said the same solution could have different runtime. It's not stable. This is from my friend who worked as ops for LeetCode.
@@algo.monster I faced this with a few questions. When I attempted to submit the same code two years later it just kept failing. Also problems also change from hard to medium. I was watching some video by neet ode, where in the video it was hard but the problem in the site was a medium. I presumed that as acceptances increased, it changed
Love from india
These are basic things.
i thought u will go to inspect element change the constraints or test case something so that anything might work
User-submitted code is run on the server so it wouldn't work. But I like the way you think!! haha
Why is there an AI voice over?
It's my cloned voice, which makes syncing with the animation easier. This was one of our earlier videos, and we were still learning, so the quality isn't the best haha. Thanks for sticking with it anyway!
But in some cases due to this we overthink to optimise the time complexity. I think this fails and make us overthink specially in case of O(N) ARMOTISED complexity
The point is that you can use the constraints to rule out runtimes that couldn't possibly be accepted by Leetcode.
For example, if the input size is up to 1 million, you can instantly rule out any strategy that is as slow or slower than O(n^2), such as a 2D dynamic programming approach.
I dont think the aim is to just pass the leet code question. Typically if you use brute force in an interview the interviewer would just ask you "is there any other way to solve this?" And if brute force is all that you did its not going to end well
which is why you need to ask the constraint? a big part of an engineer's job is choosing the right tool for the right job.
Check this video to understand how LeetCode (or Hackerrank etc) works behind the scene: th-cam.com/video/hRnJxPeoZyg/w-d-xo.html
nerd
You think you're pretty cool don't you
This is true, but useless.
can you elaborate? figuring out the algo is half the battle
this is absolutely useful. not fully but looking at the constraints your 1/4th work is done
it's literally a binary search technique for the algorithm matching