5 Problem Solving Tips for Cracking Coding Interview Questions

  Рет қаралды 1,309,786

CS Dojo

CS Dojo

Күн бұрын

Here are 5 of my favorite problem-solving techniques for solving any coding interview problem!
For improving your problem-solving skills, as I mentioned in the video, I recommend the following two pieces of resources:
- 11 Essential Coding Interview Questions (my Udemy course): www.udemy.com/11-essential-co...
- Daily Coding Problem (a website that’s run by a friend of mine): www.csdojo.io/daily
Also, here’s my solution code in Python and Java: www.csdojo.io/problem
And you should follow me on IG if you haven’t yet :)
You can find me @ykdojo: / ykdojo

Пікірлер: 1 000
@CSDojo
@CSDojo 5 жыл бұрын
Here’s my solution code to this problem in Python and Java: www.csdojo.io/problem Also, for improving your problem-solving skills, as I mentioned in the video, I recommend the following two pieces of resources: - 11 Essential Coding Interview Questions (my Udemy course): www.udemy.com/11-essential-coding-interview-questions/?couponCode=PROBLEM - Daily Coding Problem (a website that’s run by a friend of mine): www.csdojo.io/daily See you guys in the next video!
@13_cse_fredericimmanuel98
@13_cse_fredericimmanuel98 5 жыл бұрын
Hey Cs dojo, your videos are very much different from other online tutors. I loved the python tutorials. I wish you'd make C programming tutorials too. Hoping to hear from you soon.
@flametrav2891
@flametrav2891 5 жыл бұрын
witch software do you use for the presentation?
@cookeemonstahz
@cookeemonstahz 5 жыл бұрын
What you can do is replace every element in array A with its conjugate. Then, for every element in array A, you do a binary search in a sorted array B, to find the closest possible number. This will allow you to reach an O(n*logn) solution with only O(1) space.
@Toopa88
@Toopa88 5 жыл бұрын
18:07 check out projecteuler. It has 645 problems that can be solved and once you solve a problem you can see how others solved it. IT IS FREE!
@thesanto0520
@thesanto0520 5 жыл бұрын
@@cookeemonstahz it's o(n) space just to store the array.
@SV90527
@SV90527 3 жыл бұрын
To everyone who understood this video, I'm happy for you. I'll get there soon. Update: I'm working as a Software Engineer in Toronto. Keep working hard, one day it'll pay off 👊🏼⚡️
@firstbay4024
@firstbay4024 3 жыл бұрын
i dont understand too
@michellemercy2715
@michellemercy2715 2 жыл бұрын
You got me but we are half way there okay! Haha stay curious!
@lokeshvijay5609
@lokeshvijay5609 2 жыл бұрын
I'll be there after you
@riceball100
@riceball100 2 жыл бұрын
Same will soon get there
@darkvador8477
@darkvador8477 2 жыл бұрын
Hopefully
@simranray4564
@simranray4564 4 жыл бұрын
Besides everything related to coding and thinking, I really like the way that on clicking the dotted box bursts to display what's inside.
@othmanalyusifey356
@othmanalyusifey356 4 жыл бұрын
the same thing with me ~،،
@pl9397
@pl9397 4 жыл бұрын
any idea what tools/apps he is using to show the effects?
@GAURAVSHARMA-yg1ig
@GAURAVSHARMA-yg1ig 3 жыл бұрын
i hope the same thing happens to me when i start to code
@mormsophen3238
@mormsophen3238 3 жыл бұрын
Poo L idk. He might be the one who made that tool.
@iiparshii
@iiparshii 3 жыл бұрын
😂 😂 😂 😂 yea Simran.. lets just miss every imp. coding info. and lets focus on pop up boxes 😂..
@MonsieurCHING
@MonsieurCHING 5 жыл бұрын
Tip #1: Come up with a brute-force solution - 1:23 Tip #2: Think of a simpler version of the problem - 2:34 Tip #3: Think with simpler examples -> try noticing a pattern - 5:54 Tip #4: Use some visualization - 10:10 Tip #5: Test your solution on a few examples - 15:09
@algoking
@algoking 5 жыл бұрын
nice
@husa1n
@husa1n 5 жыл бұрын
Underated hero, cheers mate
@neensta5404
@neensta5404 5 жыл бұрын
kitna vella hai be ye
@modestpelicanprogramming6370
@modestpelicanprogramming6370 4 жыл бұрын
@@neensta5404 Not gonna lie that was kinda aggressive...
@Venketu
@Venketu 3 жыл бұрын
Doing God's work
@neutral1802
@neutral1802 4 жыл бұрын
The moment your best solution is the brute-force one. 1:32 This pair, Dis pair, Despair.
@fevgatoz
@fevgatoz 4 жыл бұрын
i cried laughing broh
@maksimbeliaev5339
@maksimbeliaev5339 4 жыл бұрын
Yes, the guy is just noob In first example he has shown a list with negative numbers, so his last method will not work He will just fail an interview
@hassanakhtar7874
@hassanakhtar7874 4 жыл бұрын
@@maksimbeliaev5339 u suck
@user-ou5eo1gg3z
@user-ou5eo1gg3z 4 жыл бұрын
Maksim Beliaev you know that he's an ex-google software engineer right?
@alejandroestrella69
@alejandroestrella69 3 жыл бұрын
And that means what exactly?
@asishbalu2415
@asishbalu2415 3 жыл бұрын
Here's a solution that is also O(nlogn), but faster than the one you provided: Sort array 1 (nlogn). Now, for each value x of array 2, conduct binary search on array 1 to find the element closest to (target -x). This should be nlogn as well. Your solution requires 2 sorts and extra processing, but this one only requires one sort.
@mohamedkandeel6553
@mohamedkandeel6553 3 жыл бұрын
That's the same solution that jumped into my mind once I read the problem.
@rpesel
@rpesel 2 жыл бұрын
Exactly my solution
@OmarChida
@OmarChida 2 жыл бұрын
I have solved a problem very darn similar to this earlier today and this was the solution I came up with too
@konm
@konm 2 жыл бұрын
Closest doesn't mean that the sum of the elements will be close to the target. You are right. Nice approach.
@YongfangZhang
@YongfangZhang 2 жыл бұрын
Nice try.
@bpc1570
@bpc1570 4 жыл бұрын
Just a thought. The question is that if the interviewer has not seen or practiced a given problem, will they still be able to solve and evaluate a candidate? The problem of these kinds of interviews is that the interviewer and candidates are not on equal ground. When the interviewer clearly knows the answer, it becomes somewhat biased when they attempt to judge their candidates (by asking things like, can you think of a better solution to this and so on, notice the keyword "think" not "recall"). I guess my point is that I don't quite believe the interviewer can always improvise a solution to problems such as finding the total number of subsets of integers that add up to a number or a cell automata problem with lots of recursions. I believe they can probably solve it by sitting quietly by themselves and tackling the problem without a time limit or without people watching them, but the question is that can they "think from the scratch" themselves? Do you code under pressure with people watching you and judging you? You don't see this kinds of interview in other industries such as EE, physics, chemical engineering, etc., because there's no way to ask you to design and implement a VLSI chip that functions a certain way or design a quantum mechanical system on the scene. But somehow in CS, this is convenient. Very often you interview for a machine learning position but people only, or to a large extent, focus on trickery coding problems; almost as if statistics and math are not as important; kind of going backwards, imho. Let's have an open research question, so that neither the interviewer nor the candidate has a viable solution at the moment. Then, we both try to solve the problem or come up with a tentative solution, in which case you'll also get to see how the candidate approaches the problem, their patience, their analytical capacities, personalities and so on. But at least, this interview process would be less biased. When people practice a lot of these coding problems and then go ahead to have an interview, they are really just "recalling from memory" on how to solve certain problems but you are not really testing their "analytical abilities."
@codingrat8323
@codingrat8323 4 жыл бұрын
This is so true. But, sadly a reality!
@scarface548
@scarface548 4 жыл бұрын
I like your idea about both interviewer and interviewee do that same problem. That would be awesome.
@vassilyn5378
@vassilyn5378 3 жыл бұрын
The bias you're [rightly] referring to is irrelevant. You're not competing against the interviewer, you're competing against other candidates. So you shouldn't care how biased your interviewer is to that particular problem 'cause he applies the same bias to all candidates (in theory). Therefore, it doesn't matter. What this does or doesn't test and/or how it correlates with candidate's qualities is another question. But the playground is equally fair (or unfair) for all candidates.
@scarface548
@scarface548 3 жыл бұрын
@@vassilyn5378 you are right it doesn't really matter how hard or easy the problem is if comparison is only against other candiates.
@allmighty2000
@allmighty2000 3 жыл бұрын
You guys are not newbies like me that’s why this things are coming on your head but Those who are sitting in at big companies as an interviewer are as good as ever could be , believe it , And you have to be that good to be a member of that big company
@joaovfeijo
@joaovfeijo 5 жыл бұрын
High quality as always, man. Thank you for your good work. I learn a lot with your videos.
@Seawolf159
@Seawolf159 5 жыл бұрын
Great buildup from vague idea of how to do it, to coming up with a way to traverse that grid. Really cool.
@haroldwran775
@haroldwran775 5 жыл бұрын
The most awesome explanation I have ever heard! Thank you, Dojo
@maks0bs
@maks0bs 5 жыл бұрын
That's actually a very good idea, I haven't thought about, great video)). But why not use binary search in this problem? The complexity would also be O(n log n). You parse through the unsorted array and start binary search on the sorted one to find the closest sum. Roughly speaking, the complexity would be 2 * n * log n, since you only sort one array and use binary search with the other one for n log n. The concept of binary search can be used in a variety of other problems, but I'm not really sure if this can be applicable somewhere else. The idea in the video looks like semi-dynamicProgramming.
@toantruong9533
@toantruong9533 5 жыл бұрын
I also come up with this solution.
@TheLuke1662
@TheLuke1662 4 жыл бұрын
Same! Here is my solution in C++ void closestPair(std::vector& a, std::vector& b, int target) { std::sort(b.begin(), b.end()); int a_index = 0, b_index = 0; int current = a[0] + b[0]; int current_target; for (int i = 0; i < a.size(); i++) { current_target = target - a[i]; auto lower = std::lower_bound(b.begin(), b.end(), current_target) - b.begin(); int temp = b[lower]; if (lower != 0){ if (std::abs(b[lower] - current_target) > std::abs(current_target - b[lower - 1])) { temp = b[lower-1]; lower--; } } if (std::abs(current - target) > std::abs(temp - current_target)) { current = temp + a[i]; a_index = i; b_index = lower; } } std::cout
@rafagamaxima
@rafagamaxima 4 жыл бұрын
And what about the complexity of sorting the array?
@user-sd7hh8ek1c
@user-sd7hh8ek1c 4 жыл бұрын
That's what I came up with as well. But it will probably be slower, because performing the second `O(n log(n))` operation will eventually be slower than a `O(n)`. But it's still `O(n log(n))`, so maybe it's not that bad.
@MishaAmashukeli
@MishaAmashukeli 3 жыл бұрын
Yeah it will work, but it will be a bit more code, and slower.
@xzist
@xzist 2 жыл бұрын
This is brilliant. Thank you so much for this. Easily the most detailed and clearly articulated and digestible, general approach to solving algorithm problems.. While watching youtube videos on algorithms, so many of the people solving them just seemingly grab the solution out of thin air. No doubt this is due to them doing a ton of algorithms in the past, recognizing patterns and reaching for solutions or similar solutions that worked for them in the past. The problem with this for people newer to solving algorithms is as I mentioned - this seems to come out of thin air and doesn't help, because it doesn't show the thought process behind what came up with the original pattern that they're grabbing for.. hope that makes sense and thanks again for the video.
@hertzvador2220
@hertzvador2220 2 жыл бұрын
Good sales pitch. A simple solution: You could associate each value to each bit of an integer (12 bits, 6 MSB is first array, 6 LSB is second array) in total going from 0 to 2^12=4096. Add all the values associated with a 1. This would go through all the combinations at light speed.
@aznthanh23
@aznthanh23 5 жыл бұрын
Thank you for clear and concise explanation with visuals. Keep up the good work
@nomadicfathersons
@nomadicfathersons 3 жыл бұрын
If you like Html & css webdesigning kzbin.info/www/bejne/pZDKpquCdtR_j7s kzbin.info/www/bejne/hqLVi6WslrSVkM0 Support & comment on my video
@naserdakhel5051
@naserdakhel5051 5 жыл бұрын
I really really enjoy your videos, problem solving the most, i hope your channel covers more about problem solving and competitive programming
@nomadicfathersons
@nomadicfathersons 3 жыл бұрын
If you like Html & css webdesigning kzbin.info/www/bejne/pZDKpquCdtR_j7s kzbin.info/www/bejne/hqLVi6WslrSVkM0 Support & comment on my video
@KumaranKM
@KumaranKM 2 жыл бұрын
Solution with log(n): a = [7, 4, 1, 10] b = [4, 5, 8, 7] target =14 count = 0 a.sort() b.sort() j = len(b)-1 i = 0 while(i=0: if a[i] + b[j] < target: i += 1 continue elif a[i] + b[j] > target: j -= 1 continue else: count += 1 print(a[i] + b[j]) j -= 1 else: break print(count) Credits: You are an awesome youtuber. Before watching your video, I don't even know how to solve the problem. But now I could able to give a different solution with less time complexity. It's all because of your tutorial. Thanks for your videos. Now I can able to bring a solution with most of the time logn complexity. Keep doing your work and make more coders around the world!
@hannahpetrunko6293
@hannahpetrunko6293 2 жыл бұрын
As someone very far from tech, I found this both easy to follow and inspiring. Grrrrreat. Thank you so much!
@cachorito01
@cachorito01 5 жыл бұрын
These tips are amazing!! The final solution amazed me, I just recently failed an interview for an intership at one of the big 4 and im determined to study at least 2 hours a day for my next one, I hope you make more videos like these!
@RamizZamanJEEPhysics
@RamizZamanJEEPhysics 5 жыл бұрын
Where did you apply mate ?
@cachorito01
@cachorito01 5 жыл бұрын
@@RamizZamanJEEPhysics I went to a hackathon and left my resume, but you can apply online too, just search the name of the company and careers
@RamizZamanJEEPhysics
@RamizZamanJEEPhysics 5 жыл бұрын
Thanks mate
@nomadicfathersons
@nomadicfathersons 3 жыл бұрын
If you like Html & css webdesigning kzbin.info/www/bejne/pZDKpquCdtR_j7s kzbin.info/www/bejne/hqLVi6WslrSVkM0 Support & comment on my video
@haibai1766
@haibai1766 3 жыл бұрын
My Tip #2: Find the inefficiencies in the brute force solution and see if you can optimize them. In this case it's the checking of the second array for each element in the first array, which can be optimized by sorting the second array and using binary search (I haven't watched the entire vid yet so I don't know if that's the intended solution or complexity). Edit: Huh so two pointers may lead to an O(N) solution (after sorting)! Two pointers and binary search seem very related!
@johncodeinaire137
@johncodeinaire137 3 жыл бұрын
A great video! This is one of the best explanations on the thinking process behind solving algorithm problems. Thanks for sharing!
@thrishmareddy
@thrishmareddy 5 жыл бұрын
Learnt so so much in this video alone. Thanks a lot for this high-quality content ❤
@nomadicfathersons
@nomadicfathersons 3 жыл бұрын
If you like Html & css webdesigning kzbin.info/www/bejne/oWfKhneoiNCFh6c kzbin.info/www/bejne/hqLVi6WslrSVkM0 Support & comment on my video
@adityashankarpal5934
@adityashankarpal5934 5 жыл бұрын
For your second approach, you will require O(nlogn) . Suppose you have two arrays A and B with n elements and for each element in B you perform binary search O(logn) searching for the other number of pair in A. For n elements in B, the complexity would be O(nlogn)
@dizzydeveloper
@dizzydeveloper 2 жыл бұрын
Actullauy, i was looking comments to see if someone has mentioned this.e second approach will not take O(n) time, it will take more time.
@vedantsharma5876
@vedantsharma5876 2 жыл бұрын
But we can't use binary search since the two arrays are unsorted. So the second approach also would yield O(n^2) time complexity(Please correct me if wrong)
@rickvstange
@rickvstange 2 жыл бұрын
@@vedantsharma5876 You can first sort both arrays in O(nlogn), then do the binary seach for each element in B, which would be also O(nlog), since each binary seach takes O(logn). So, in the end, it should be O(nlogn). If the arrays were already sorted, doing the algorithm from the video would only take O(n), while binary seach for each element in B would still take O(nlogn).
@vedantsharma5876
@vedantsharma5876 2 жыл бұрын
@@rickvstange oh yes. Thanks Ricardo!
@Sycu
@Sycu 2 жыл бұрын
i would say its O(n*m) where m is the value of the target. You can think about corner case - where target is huge, like 1000000000, and all the numbers are small - 0, 1, 2 etc. You would have to iterate 1000000000 times to get the answer
@allfreetechhub
@allfreetechhub 3 жыл бұрын
Another way: Sort the first array (a1) in ASC order, while sort the other one (a2) in DESC order. start with i1 = 0, i2 = 0 (i1 as index of first array, i2 as index of 2nd array) Check a1[i1] + a2[i2], if it's less than given number, then "i1++"(to pick a larger number), and if it's greater than the given number, then "i2++"(to pick a smaller number). You will get the answer with following complexity: Sorting: O(n*logn), twice Iteration: O(n), twice (worst case)
@bird6472
@bird6472 2 жыл бұрын
This is the way I did it. Sort both arrays then it becomes a simple 2 pointer pattern problem.
@Shubham_Singh_India
@Shubham_Singh_India 5 жыл бұрын
thumbs up...want more videos on problem solving techniques. And congratulations to you man, my friends liked your channel too after I suggested them.
@b735player
@b735player 4 жыл бұрын
Another great way to solve this problem: 1. Sort 1 of the arrays O(n*log(n)) 2. Make that sorted array into a balanced binary tree (this is O(n) complex) 3. for each elem in the other array: DFS search binary tree for closest pair 4. DFS method is defined as follows if bTree.root + elem is closer to the target than the current best pair then (bTree.root, elem) becomes the best pair if bTree.root + elem < target && bTree.right.nonEmpty then DFS(right) else if bTree.root + elem > target && bTree.left.nonEmpty then DFS(left) The DFS lookup for the closest pair for a single element takes O(log(n)) time. Repeating for each element in the second array gives us O(n*log(n)) time
@ImaskarDono
@ImaskarDono 4 жыл бұрын
Exactly. This is much better, because if arrays have different length, you can only sort the small one. And even if they are the same, real world complexity is better.
@tb0nestk
@tb0nestk 5 жыл бұрын
YK, Thinking out loud. In an interview setting, it would be intimidating to approach a problem, thinking out loud. It takes experience and practice to master the technique. Your explanation is so valuable, learning how to think and what questions to ask. Here’s an idea. Take leetcode site, there are over 700 problems, you solve one problem a day, show how you’d approach the problem, how to think, what questions to ask, how to optimize... I think that’s so valuable. Who knows by the end of the year, you can just gather up all those videos and create another Udemy class, I think lots of people would appreciate that
@nomadicfathersons
@nomadicfathersons 3 жыл бұрын
If you like Html & css webdesigning kzbin.info/www/bejne/oWfKhneoiNCFh6c kzbin.info/www/bejne/hqLVi6WslrSVkM0 Support & comment on my video
@harishkandikatla9791
@harishkandikatla9791 5 жыл бұрын
You are genius, thanks a lot for your tips. It really helped me, keep on posting these kinds of videos!
@vaibhavpareek6112
@vaibhavpareek6112 3 жыл бұрын
You are genuinely good. Your explanation is pretty nice for a person with a low DS experience like me 👍
@achanoch
@achanoch 5 жыл бұрын
You are brilliant. Thanks for the knowledge sharing and innovating problem solving skills
@andreastischler3447
@andreastischler3447 5 жыл бұрын
Regarding your last solution: if there are two equal numbers in one of the arrays you start with then I think this approach could lead to a problem. In your grid-like visualization there would be a line (or row) where there are two equal numbers next to each other. Now say your target number is 17 and you hit a spot where there are two 16 next to each other you could ignore the second 16 that sits to the right of the one you are checking - so i think when you ignore the space next to the number you were checking you have to first check if the neighbouring numbers are really smaller or am I missing something here.
@JCho-pi5jz
@JCho-pi5jz 3 жыл бұрын
This is very elementary, but I like how you go through each level of complexity. From brute-force to optimal, it's really giving me an idea of how to do an interview well. people say it and we know it's a thing but i have a bad habit of skipping the simplest way. but i see how the simpliest way can look good. I've never seen someone do an interview so... *shrug* idk wI don't know it looks like
@BipinOli90
@BipinOli90 5 жыл бұрын
Just sort both arrays, from one array pick one element at time and using binary search, search for a other half of number in another array. You can write 2 binary search for this, one should return the exact number or the closest number higher than it and second one should return the exact or closest one smaller than it. Actually you only need to sort the one where binary search is being done. Overall complexity is O(nlgn). In the end what you came up with is very similar with this, and visualizing problems and solutions is a very important skill. Anyway, I wrote this, just to show that there are some other ways to think about such problems.
@jukebox1209
@jukebox1209 5 жыл бұрын
Another great video - helpful and practical! (久しぶり!)
@bris.e
@bris.e 4 жыл бұрын
This amazing video steps got me a new amazing job. You are great! Thank you for the awesome content you are generating!
@nomadicfathersons
@nomadicfathersons 3 жыл бұрын
If you like Html & css webdesigning kzbin.info/www/bejne/pZDKpquCdtR_j7s kzbin.info/www/bejne/hqLVi6WslrSVkM0 Support & comment on my video
@JCho-pi5jz
@JCho-pi5jz 3 жыл бұрын
Thank you! The udemy videos are perfect. It's the only udemy course I actually used.... sadly, such ambition, yet no follow-through. I have a very important interview coming and I feel nervous bc I'm competing with people who were formally trained in CS. I just learned everything on the fly with no structure. I didn't even know there were algorithm types or what a binary search was. I would do them all the time bc I have a physics background so I understand optimation but I never learned the names. After seeing the different types of algorithms I feel like I'm starting with some sort of foundational idea of how to do it. I thought binary search meant you put a ) if it's not what you were looking for and a 1 if it was. lol
@konstantinavdeev6460
@konstantinavdeev6460 3 жыл бұрын
A very nice explanation of the thinking process. But another trait of a good programmer is knowing his data structures. Java, for example, has TreeSet with an O(logn) time complexity for ceiling/floor methods. And that would come straight from your "simpler version of the problem". So, for those of us not so bright as to come up with the original solution, it's worth to learn the proper tools our languages provide.
@marcoangelo
@marcoangelo 4 жыл бұрын
I was struggling to find something like this, thank you
@nomadicfathersons
@nomadicfathersons 3 жыл бұрын
If you like Html & css webdesigning kzbin.info/www/bejne/pZDKpquCdtR_j7s kzbin.info/www/bejne/hqLVi6WslrSVkM0 plz subscribe & comment on my video
@4fecta353
@4fecta353 4 жыл бұрын
You could have solved the problem with the second method in O(nlogn) time if you used a BBST, and binary search for floor and ceiling values. Since we don't actually need the index of the values, we can use a TreeSet in Java (red-black tree) to implement this idea without it being too bulky. This saves from all the ArrayList sorting shenanigans.
@nomadicfathersons
@nomadicfathersons 3 жыл бұрын
If you like Html & css webdesigning kzbin.info/www/bejne/oWfKhneoiNCFh6c kzbin.info/www/bejne/hqLVi6WslrSVkM0 Support & comment on my video
@hil449
@hil449 2 жыл бұрын
that uses extra space tho, but with 2 pointers you can solve it with constant space
@2watchpro
@2watchpro 3 жыл бұрын
Hi professor, I am now one of your followers, because Amin Raghib recommended your channel in one of his live videos, Good luck from Morocco 🇲🇦 👏
@harshpalsingh1746
@harshpalsingh1746 3 жыл бұрын
After creating the table, better way to find the closest no is binary search in my opinion. Because in your examples the closest no was always somewhere in the middle, but what if it is the last box, binary search will do wonders in this case.
@stunseed8385
@stunseed8385 4 жыл бұрын
I think you can also achieve a nlogn by sorting, and do a modified binary search for the exact or the closest value.
@franciscov511
@franciscov511 3 жыл бұрын
yes, oh maybe you can sort the two arrays, mix them and perform binary search
@StRanGerManY
@StRanGerManY 4 жыл бұрын
Tip#2 It won't be O(n), since for each number in first array, we calculate the reminder and look at each number in the second array. Thus, it is same O(n^2) as the brute force solution. Actually, its quite a bit worse, since we actually have x * O(n^2) As for the final solution, vizualization is nice and all, but it is actually quite a bit easy to solve this without it. Just sort both arrays, one from small to big, and the other array - the other way around. Start from 0 on both of the sum, if sum is bigger then searched number, get next value on the second array. Otherwise, get value from the first array. Remember the sum at each step, and print the closest pair. Boom, problem solved. O(n*log(n))
@vickyanand5898
@vickyanand5898 3 жыл бұрын
No it will be nlogn since its searching in a set .
@ALLCAPS
@ALLCAPS Жыл бұрын
You're correct. Tip #2 when he said it would be O(n), I immediately thought: ..............what?
@tijikthomas
@tijikthomas Жыл бұрын
Searching in a set takes O(1) time
@thechampman3539
@thechampman3539 4 жыл бұрын
Thanks for your generosity for sharing such valuable information.
@damondsh
@damondsh Жыл бұрын
Amazing work man. I'm truly appreciative of your work!
@themg6226
@themg6226 Жыл бұрын
hello , i have a question please, in the seconde solution , is it nesseecairy to convert the first liste to a set ?
@Ready2eddie
@Ready2eddie 5 жыл бұрын
Love watching these even if this isnt my major.
@PerfectorZY
@PerfectorZY 5 жыл бұрын
Eddie Cho come to the computer science side, let the algorithms flow through you
@nomadicfathersons
@nomadicfathersons 3 жыл бұрын
If you like Html & css webdesigning kzbin.info/www/bejne/oWfKhneoiNCFh6c kzbin.info/www/bejne/hqLVi6WslrSVkM0 Support & comment on my video
@WhiteGhost13
@WhiteGhost13 5 жыл бұрын
This was on my algorithms exam last semester 😱😱 and we had to prove that ours was most optimal
@anmolswarnkar7707
@anmolswarnkar7707 2 жыл бұрын
I was able to think of the optimal solution but that's only because I already know about two pointer approach. The way you came up with the optimal solution incrementally from the brute force was very interesting!
@kevalnavadiya5827
@kevalnavadiya5827 4 жыл бұрын
You solve my doubts which i find everywhere thank you
@nutsilog
@nutsilog 4 жыл бұрын
This just made me realize how stupid I am 😂😂
@rsmlifestyle3436
@rsmlifestyle3436 4 жыл бұрын
Hey, your not stupid. These are things that are new to you. Your more than capable of learning this. Just break it down, bit by bit. Be able to teach yourself in way that makes sense to you.
@ahmedkarem2718
@ahmedkarem2718 4 жыл бұрын
Yes you are (if you compare yourself with someone that have more practice and experience but if you practice, this will be easy for you good luck.)
@CarlosFernandez-js8yn
@CarlosFernandez-js8yn 3 жыл бұрын
xxGodx ur harsh...be more positive
@PraveenKumar-id4pg
@PraveenKumar-id4pg 3 жыл бұрын
@@rsmlifestyle3436 thanks bro
@davidkuda7074
@davidkuda7074 3 жыл бұрын
@@rsmlifestyle3436 wow, that's one of the most positive things that I've read online. Thanks for spreading this positivity! Invaluable!
@olawalekazeem5820
@olawalekazeem5820 5 жыл бұрын
Love your videos man 💪 you made me fall in love with Python 😂 I'm learning how to code it now 💪
@ChrisOkw
@ChrisOkw 4 жыл бұрын
how's it going so far?
@spaghetti185
@spaghetti185 3 жыл бұрын
Your solution to that question was beautiful!❤️
@SudarshanKrSingh
@SudarshanKrSingh 5 жыл бұрын
what a great way of teaching and what a great video thanks a ton , learnt new things from you.
@hadimasri420
@hadimasri420 5 жыл бұрын
I love you bro u changed my life
@rui3692
@rui3692 5 жыл бұрын
it’s useful when you practice solving algorithm questions, but I doubt how much time you have to go though this kind of thinking process in actual interviews, especially considering that interviewers usually have prepared two questions to ask. So practice is still the key. Don’t ever try to rely on the introduced techs to hack an interview
@maria-wu7us
@maria-wu7us 2 жыл бұрын
This is not true for interviews I have conducted. I would rather get a candidate who thinks through a problem and reaches even a brute force solution to something they have never seen before. Sometimes you can tell that a person has practiced the question and simply memorized a solution. Gaps will start to show when you ask questions on basic concepts on their target language that are not related to solving problems. Practice is important but most professionals don't have the time to sit and run thorough programming problems in their free time. But you will have amassed many skills just from working full time and will feel more conformable showing up to interviews without doing the overnight cram sessions I used to do in college. And yes, there will be times when you can't answer the question. I have been there multiple times (in fact, with problems similar to the one in the video). And that's okay, that just means you're not a right fit for the job. I also don't want to reach a position in which I realize later on that I don't have the technical knowledge to contribute well. It doesn't feel good.
@srinivasnangunuri1313
@srinivasnangunuri1313 4 жыл бұрын
Absolutely Amazing techniques. Thank you CS Dojo. your advice is as always, invaluable. Cheers!
@MrAmoslemi
@MrAmoslemi 4 жыл бұрын
you made a simple problem very difficult! Your brute-force approach was the best for coding!
@dudekulavidyasagar3745
@dudekulavidyasagar3745 5 жыл бұрын
U are the one who inspired me to learn programming ❤ Thanks bro 👍
@user-hh2is9kg9j
@user-hh2is9kg9j 2 жыл бұрын
I could do that if I have 3 hours and preferably without someone in a suit staring at me while I am doing it.
@sanchousf
@sanchousf 4 жыл бұрын
For the second algorithm (with a set) the complexity will be O(x*n*log(n)). First, you need to fill the set. Inserting an element in a set is O(log(n)), inserting (n) elements in a set is O(n*log(n)). Second, Because you iterate through the array (O(n)) and you search in a set (O(log(n))) for each element in the array (which gives us O(n*log(n))). And you do it (x) times. PS: On the other hand if you use hash table for the set search for an element should be O(1) (if there is no hash collisions). So, probably be yes. It could be O(x*n).
@DineshGowda24
@DineshGowda24 5 жыл бұрын
Great video man! Loved it.
@AndreyZhidenkov
@AndreyZhidenkov 5 жыл бұрын
The process of sorting arrays requires time ans space as well.
@herzfeld2
@herzfeld2 5 жыл бұрын
he states at the end the time complexity is O(nlogn) and space complexity O(n) "assuming that you use an nlogn sorting algorithm" i.e. mergesort or quicksort or te like. mergesort is of time complex O(nlogn) and space O(n) thus we can assume he is accounting for this correctly.
@himanshusankhala8633
@himanshusankhala8633 4 жыл бұрын
Code in python bro
@guccibane3422
@guccibane3422 5 жыл бұрын
I’m prepping for a big interview at one of the big 4 companies (or 5 if counting Microsoft) Thank you for this video!
@MattZelda
@MattZelda 5 жыл бұрын
How'd it go?
@lolmonkyboi
@lolmonkyboi 5 жыл бұрын
Your videos are clear consise and extremely helpful please dont stop lol
@jaredbaum
@jaredbaum 4 жыл бұрын
My solution to this would be to sort just 1 of the arrays. Then for each node of the 2nd array do a binary search into the first array of the 'compliment' (aka the number that would directly equal the target). This should get the closest to that. From there you just keep track of the minimum absolute value of the different from the target. This is also an O(nlgn) solution.
@meryamle6270
@meryamle6270 5 жыл бұрын
I'm not even into coding but I just like you 😘
@axelcarvalho2661
@axelcarvalho2661 4 жыл бұрын
The set solution is O(n) and array sorting is already O(n*logn), so how is it better?
@maxintos1
@maxintos1 4 жыл бұрын
The basic set solution only works on the simplified problem where we're looking for exactly the value. When we're solving the real problem the set solution is O(x*n) which might end up being way bigger than O(nLog(n)). For example with simple 1 element lists {500}{400} and target sum of 10, the set algorithm would take almost 900 cycles to calculate the answer.
@vleipnik
@vleipnik 4 жыл бұрын
@@maxintos1 Yes, you are correct .
@sanchousf
@sanchousf 4 жыл бұрын
No, it's not. Because complexity for the set solution is actually O(x*n*log(n)). Plus, filling of a set is O(n*log(n)).
@Mrwiseguy101690
@Mrwiseguy101690 4 жыл бұрын
@@sanchousf That's not true. Using a hash table backed set is O(1) insertion.
@Mrwiseguy101690
@Mrwiseguy101690 4 жыл бұрын
The time complexity is O(x*n), but x can be arbitrarily large. In the third solution, it really depends on the sorting algorithm used. If you use mergesort or heapsort, it'll definitely be O(nlogn) but space will also be O(n). If you use quicksort, worst case is O(n^2), but space is O(1). In my opinion, you can't objectively say which solution is better without having an idea of what x would tend to be. For small x, the second solution is better. For larger x, the third solution is better.
@julesthecat.
@julesthecat. 2 жыл бұрын
Great explainations! Thank you so much for sharing! 🥰
@resolviendomates5433
@resolviendomates5433 9 ай бұрын
Really good explanation!! Cheers!!
@amirabbas434
@amirabbas434 5 жыл бұрын
Hi... Good video. Like always
@djBC10000
@djBC10000 5 жыл бұрын
Good luck coming up with these insights first time during a real interview rofl.
@zubich
@zubich 4 жыл бұрын
just had this on my interview... of course I only came up with brute force solution. :)
@maxintos1
@maxintos1 4 жыл бұрын
You don't really need those exact insights to solve the problem, it's just that visualization can help. He was basically brute force getting the insights. You could have just as easily found the answer by just thinking how if you sort the data you could eliminate a lot of checks, because if you know that array1[i] + array2[j] > target then there is no point checking the value of array1[i] + array2[j+1]. When you sort the data and look at it {1, 4, 7, 10} {4, 5, 7, 8} with target 13 you could notice that 10 + 4 is bigger than 13 so there is no point checking any other number with 10 so we move to 7. 7+4 is less so move forward. 7+5 less so keep going. 7+7 >13 so no point going forward. Move to 4 and etc until you need to move left or right, but there are no more elements. Then just return the answer you hopefully kept track of during the looping.
@johnsimon8457
@johnsimon8457 4 жыл бұрын
If you were given two arrays of 1000 where O(n^2) is crap it MIGHT push you in the spatial solution direction but good luck implementing that on a whiteboard lol on hour three of an interview loop
@ChamplooMusashi
@ChamplooMusashi 4 жыл бұрын
Do some of the problems and get through a few interviews and you'll be able to find it. This problem really isn't so complex.
@LordLoldemort7
@LordLoldemort7 4 жыл бұрын
@@zubich did u get the job lol
@suhailahmed2310
@suhailahmed2310 3 жыл бұрын
Really neat thought process!
@hilbertcontainer3034
@hilbertcontainer3034 2 жыл бұрын
Thanks CS Dojo. I am going to have my first ever coding interview in an hour! (Out of confidence) x.x This is the last tech video i am going to see! So thanks for the tips For reference, My first approach with brute force would be Arr_1 = [-1,3,8,2,9,5] Arr_2 = [4,1,2,10,5,20] Target = 24 #For each integer in Arr_1, calculate the difference from 24. And find the closest int in Arr_2. Arr_1 [0] =-1, 24-(-1) = 25, the closet one to 25, is 20 in Arr_2, Ie. [-1,20] = 19 Arr_1 [1] =3, 24-3 = 21, the closest one to 21, is 20 in Arr_2, i.e. [3,20] = 23 Arr_1 [2] =8, 24-8 = 16, the closest one to 16, is 20 in Arr_2, i.e. [8,20] = 28 Arr_1 [3] =2, 24-2 = 22, the closest one to 22, is 20 in Arr_2, i.e. [2,20] = 22 Arr_1 [4] =9, 24-9 = 15, the closest one to 15 is 10 or 20 in Arr_2, i.e. [9, 10] and [9,20] = 19, 29 Arr_1 [5] = 5, 24-5 = 19, the closest one to 19, is 20 in Arr_2, i.e. [5,20] =25 We got another array to store above pairs and results, and replace the pairs if the new result is closer answer to the target. Navigate the result. 23 and 25 are closest to 24. I.e. [3,20] and [5,20]
@sergiusava9151
@sergiusava9151 4 жыл бұрын
Brute force solution be like: dispair, dispair, dispair. Very useful tips! Thank you!
@nomadicfathersons
@nomadicfathersons 3 жыл бұрын
If you like Html & css webdesigning kzbin.info/www/bejne/oWfKhneoiNCFh6c kzbin.info/www/bejne/hqLVi6WslrSVkM0 Support & comment on my video
@archmad
@archmad 3 жыл бұрын
not sure if i get #2 - create a set, yet the set is still a list which you need to compare it with individually which is still n^2, did i misunderstood a set?
@superoven
@superoven 3 жыл бұрын
A "set" in this case being like a python set. Checking if a specific number in it exists or not is just O(1) after you've made the set
@kmar5264
@kmar5264 3 жыл бұрын
The cost of looking up any value for a 'set' data structure is O(1) time. You would just ask the set if it contains a specific number(ex: set.contains(5) ), versus iterating through the values in the set.
@nikouai
@nikouai 4 жыл бұрын
Great explanations 👍🏼 My solution was to use the sorted array and do binary search. Obviously not better as it is N*logN, but the sorting of the arrays is already that. So overall the same
@nikouai
@nikouai 4 жыл бұрын
lower_bound() for binary search, twice in either direction
@PlaneToTheBrainES
@PlaneToTheBrainES 4 жыл бұрын
I have a question for the code attached to the video: why is it 'j = len(a2_sorted) - 1' instead of 'j = len(a2_sorted)' in the nineth line?
@sarkarasm285
@sarkarasm285 4 жыл бұрын
Can't we sort only one of the arrays and then perform binary search on the array for each element of the other array. Time complexity still remains o(nlogn).
@anouar-fadili
@anouar-fadili 4 жыл бұрын
greedy thinking! it's my solution too.
@rajendrabera8607
@rajendrabera8607 5 жыл бұрын
Alternate approach: Input: array A, B; int sum 1. Sort array B 2. For every element of array A binary search closest element (sum - A[i]) in array B
@limingxu8648
@limingxu8648 5 жыл бұрын
That was what I thought of immediately, but on second thought, his solution might be better. For just one solution both solutions would have a time complexity of n*log n, and binary search might actually be faster since sorting requires a lot of memory write. But if you need to use the same two arrays to find multiple targets his solution would have an amortized complexity of n. Not to mention it looks much more elegant.
@OtakuSanel
@OtakuSanel 5 жыл бұрын
for step 2 you don't need to go through all values of a, only until the point a perfect match is found at which point you can terminate early
@jonathanguerreroperez9304
@jonathanguerreroperez9304 5 жыл бұрын
Doesn’t work, you need also sort array B, and you can’t do binary search because you have two pointers.
@gale93
@gale93 4 жыл бұрын
Amazing, it has been very fun to follow
@neilmolina
@neilmolina 3 жыл бұрын
One of the critical information needed here to proceed in addressing the problem that is missing, is what is the qualification criteria to determine what is close to the target.
@LuongPham-jq2px
@LuongPham-jq2px 5 жыл бұрын
What is the tool you used for creating this video YK? I think it is amazing for teaching by this way.
@smirkedShoe
@smirkedShoe 5 жыл бұрын
Yes. It's good. Looking for the same
@philcooper2408
@philcooper2408 5 жыл бұрын
He's a coder, maybe he wrote it himself
@gracewood6768
@gracewood6768 5 жыл бұрын
@@philcooper2408 :o woa
@will2see
@will2see 4 жыл бұрын
3:57 - "This solution O(n)" - Are you sure about that???
@wahahahawaha
@wahahahawaha 4 жыл бұрын
I have the same doubt (while I am in an interview)..... The number in set is O(n) , I feel it should still be O(n^2), θ(n) maybe? since the number in set is θ(1)
@manalibiswas6482
@manalibiswas6482 4 жыл бұрын
If u hash the numbers of first array, then it will be o(n). If u put it in a set, have to use something like lower_bound() instead and additional checks,.. hashing would ensure o(n).
@keunwooOOO
@keunwooOOO 4 жыл бұрын
Finding an element in a set is O(log n) so the overall complexity should be O(n log n).
@Hack_Neuron_To_DSA
@Hack_Neuron_To_DSA 4 жыл бұрын
Wrong explaination its nlogn
@lazandrei_19
@lazandrei_19 4 жыл бұрын
According to stack overflow, ad, remove and contains on a hashset can be done in O(1). So it's O(n) to add them, O(n) to search the other array => O(2n) = O(n)
@khanhdd85
@khanhdd85 5 жыл бұрын
Hi, it's very interesting problem and your approach is to use branch & bound technique. However I find it's not easy to prove the running time is bounded by n*logn. From my opinion, when you have a Set, don't use HashSet but TreeSet then you can search for the closet key in log(n) and you can simply keep track the distance with the target. Thanks
@hoixthegreat8359
@hoixthegreat8359 10 ай бұрын
Genius. In Python you could do this with OrderedDict and bisect.
@himanshuchhikara4918
@himanshuchhikara4918 3 жыл бұрын
Best video i have ever seen .. pls continue making videos like this
@chillaxdude5741
@chillaxdude5741 5 жыл бұрын
We miss u here at Google!
@chillaxdude5741
@chillaxdude5741 5 жыл бұрын
@@ankitsuthar3025 yes
@chillaxdude5741
@chillaxdude5741 5 жыл бұрын
@@srt-fw8nh well, i wont say it is enough but its very important.. also try to work on your problem solving ability.😀
@brendapanda244
@brendapanda244 5 жыл бұрын
How is the Google office people say its cool
@chillaxdude5741
@chillaxdude5741 5 жыл бұрын
@@brendapanda244 it is amazingly cool..I love it.. at least u do not get bored!😀😀
@alexfaucheux6138
@alexfaucheux6138 5 жыл бұрын
Do the coding interviews reflect what you will use in a job?
@tharindueranga6407
@tharindueranga6407 3 жыл бұрын
Your tip 2 is also requires to iterate through a Set. Doesn't that make it the same complexity as tip 1?
@akanbiayomide8214
@akanbiayomide8214 2 жыл бұрын
No with tip 2 he only iterates through the list. So he takes the first element of the list and sees what sum makes 24. Let’s call that number x. So x+ first element= 24. U can use set properties to search if x exists in the set. And if it does u have found the answer. Which is O(n) Bc u iterate through each element to see if there is a x that makes this true. . Hope this makes sense.
@lanpingdeng1094
@lanpingdeng1094 4 жыл бұрын
really like your matrix traversal method, no need for HashSet or Map methods
@nisachannel7077
@nisachannel7077 5 жыл бұрын
Nice vídeo dude. What app are you using in these algo videos? Thanks and keep up with the great work you're doing!
@trungnguyen5947
@trungnguyen5947 5 жыл бұрын
5:44 - till the end - the most important part
@anibalasubramaniam4153
@anibalasubramaniam4153 5 жыл бұрын
You just wrote a DDA 👍👏
@sriharshacv7760
@sriharshacv7760 3 жыл бұрын
what is a dda
@adiakogiannis
@adiakogiannis 4 жыл бұрын
Gret job. what software did u use to make the video and this pop effect? Also, what is the make of the mix u r using? Cheers.
@incredibleG007
@incredibleG007 5 жыл бұрын
Great video! What tool did you use for this demonstration video?
@weareworkingonit
@weareworkingonit 5 жыл бұрын
Don't skip math and algebra in school kids.
@danieleccleston7928
@danieleccleston7928 5 жыл бұрын
Now he tells me....
@dellebabu5705
@dellebabu5705 4 жыл бұрын
5:30 think every language dont have function to check particular element is there in the list or not . In c it is not there so u have to compare against each element. its o(n2) . 8:45 if sort first then u have to consider the sort complexity o(n2) or log n
@artur8129
@artur8129 4 жыл бұрын
right, he is not a programmer at all, checking in the set also takes n actions but he talks about it as if it was nothing. He said other silly things, too. If I am wrong, explain to me, I'll accept it.
@hestiaverof
@hestiaverof 4 жыл бұрын
ArtCool Live it’s because the set is a hash table, so lookups are constant O(1).
@artur8129
@artur8129 4 жыл бұрын
If it's hash table, you still have to go over every item which makes it O(n)
@SaifUlIslam-db1nu
@SaifUlIslam-db1nu 4 жыл бұрын
An iterative solution ( naive / brute force algorithm ) I made before moving on from 1:22 : #include #include #include // I know it's bad practice, but using it just to write code quicker using namespace std; int main(void) { int Target; // As '24' is here int N; // Size for both A and B array std::cin >> N >> Target; std::vector A(N, 0), B(N, 0); for ( int i = 0; i < N ; ++i ) std::cin >> A[i]; for ( int i = 0 ; i < N ; ++i ) std::cin >> B[i]; vector vect; vector temp(N * N); int Bind = 0, min = Target + 1; for ( int i = 0; i < N ; ++i ) { for ( int j = 0 ; j < N ; ++j ) { temp.push_back(Target - ( A.at(i) + B.at(j) ) ); if ( temp[ i * N + j ] < min ) { min = temp[i * N + j]; Bind = j; } vect.push_back(std::make_pair(i, Bind)); } } for ( const auto & x : vect ) cout
@tarekghosn3648
@tarekghosn3648 2 жыл бұрын
Your the man.please dont stop
@SYBIOTE
@SYBIOTE 5 жыл бұрын
This feels like minesweeper Edit :now I'm majoring in cs
@jesse578
@jesse578 4 жыл бұрын
The problem usually for me is not coming up with the solution, but actually coding the solution after coming up with it, because I suck at coding.
@270deepakghanwani2
@270deepakghanwani2 2 жыл бұрын
Thank you so much brother it helped me.
@stevenmarsh4051
@stevenmarsh4051 5 жыл бұрын
What software do you use for the explanations and the handwriting that you do over top of the visual aids?
Amazon Coding Interview Question - Recursive Staircase Problem
20:01
Unlocking Your Intuition: How to Solve Hard Problems Easily
17:34
Colin Galen
Рет қаралды 1,2 МЛН
Como ela fez isso? 😲
00:12
Los Wagners
Рет қаралды 31 МЛН
ДЕНЬ РОЖДЕНИЯ БАБУШКИ #shorts
00:19
Паша Осадчий
Рет қаралды 6 МЛН
5 Simple Steps for Solving Dynamic Programming Problems
21:27
Reducible
Рет қаралды 1 МЛН
How I Failed the Google Coding Interview (and lessons I learned)
14:24
Google Coding Interview With A Competitive Programmer
54:17
Clément Mihailescu
Рет қаралды 2,5 МЛН
Mastering Dynamic Programming - How to solve any interview problem (Part 1)
19:41
What Is Dynamic Programming and How To Use It
14:28
CS Dojo
Рет қаралды 1,5 МЛН
Most Tech Interview Prep is GARBAGE. (From a Principal Engineer at Amazon)
12:57
Software Engineering Job Interview - Full Mock Interview
1:14:29
freeCodeCamp.org
Рет қаралды 1,3 МЛН
Whiteboard Coding Interviews: 6 Steps to Solve Any Problem
15:18
Fullstack Academy
Рет қаралды 357 М.
Problem-Solving for Developers - A Beginner's Guide
10:44
Fireship
Рет қаралды 732 М.
Como ela fez isso? 😲
00:12
Los Wagners
Рет қаралды 31 МЛН