That was very important advice not to spend hours trying to crack something. Seen so many folks spending hours as if this is a life and death situation burn hours and barely solve a few problems in a month. Look at the solutions if you can't crack it, digest and move on. The more problems and patterns one can digest would help you solve some unseen problem on the interview.
two years later, your comment just made me realize something i have been struggling with for 5 years.. I guess you can try for sometime, if you don't get it, look at the solution, understand it very well and you will remember the patterns without even trying. And by remembering the patterns, it means you can apply it to another problem
Three years later, your comment just made me realize something i have been struggling with for 5 years.. I guess you can try for sometime, if you don't get it, look at the solution, understand it very well and you will remember the patterns without even trying. And by remembering the patternd, it means you can apply it to another problem
Three years later, your comment just made me realize something i have been struggling with for 5 years.. I guess you can try for like 20 minutes, if you don't get it, look at the solution, understand it very well and you will remember the patterns without even trying. And by remembering the patterns, it means you can apply it to another problem. It is not a matter of life and death.. It comes from practice.. Hopefully, i will get there someday
I agree with ya. It's sad on the state of things. Basically instead of working for your employer doing real work, people are secretly burning themselves out to memorize these 'tricks' to go for that next employer. And go in to an interview for a lottery and hope that it's a 'trick' you have memorized and applicable to the problem of the day. It's basically a lose-lose situation. As a current employer you lose, and as an employee seeking mobility you lose. Your future employer feels smug putting you through the ringer, until secretly productive drops to nothing because their current employee is also wasting his/her life studying and memorizing tricks. It's a vicious cycle. It'd make too much sense if prospective employers actually look for skills that you'd build up in an actual day to day job. The skills that'd actually help them in their business day to day. Nope, makes way too much sense. Can't do. I have used BFS/DFS Zero times in my career as both 9 years of C Firmware Engineer and 4 years of iOS engineer. The concept itself can be picked up when needed in 10 minutes. And does not need trick questions to proof understanding. Yet people and grilled for perfection in applying them to all sorts of 'trick' questions. What for?
Exactly! I used to spend an enormous amount of time on a single question, but I've grown from that. I truly feel like I'm becoming better with each passing day. Thank you for everything!
True I spent hours thinking, my ego always comes like I can solve this easy problem without taking any hint. We cannot spend time like this. We do not need to mug up this particular problem rather than we have to understand the concept which will help in solving any problems like this or we can use this concept where it can be useful. It's ok to take a bit of a hint to train our minds. Thank you Nick for your advice.
I spent two days on this problem before finding this video. At the time, I was telling myself that if I skipped the struggle, I'd be missing out on a valuable learning experience. It was still fun, for a bit. This is what I have learnt: Sometimes, you can cheat yourself by _not_ looking at the solution. Like others and yourself have said, the people who originally came up with these tricks may have worked for much longer or been lucky to spot them. But more importantly, I think skipping to the solution can sometimes impart other useful lessons, such as that sometimes the answer is a trick, or that there's a radically different way of thinking about things. And that's valuable. It's not like you just come away from reading a solution only knowing the solution. Sometimes it also imparts nuggets of insight and wisdom beyond the immediate answer to the problem.
Thanks a lot for making this video Nick. I just marked it down - "If you are struggling with a problem more than 20 or 30 mins , you are wasting you time ." It's a lesson worth noting down. Thanks :)
Just imagine you got frustrated thinking of a solution, then came here, and this dude again starts yelling. Anyways, great job, Nick. Really appreciate your work!
~The Much Needed advice~ *We just learn things!!!!!!!!!!!!!!* People are always stressing about how you shouldn't look at the solution and try to solve it yourself ,but no one gives this advice we arent Einstein. Thanks Nick
Nick, you are such an inspiration! I spent nearly 2 hours figuring it out but in vain. What you said is absolutely right. It is ok to fail and look at the solution sometimes. We can't be correct always. Thank you so much :)
Because if the value of k is greater than size of array we don't have to rotate the array k times. Eg array size is 7 let's say and if we are supposed to rotate it 10 times then that 10th iteration would give us the array rotated in such a fashion that it'll be exact same as 3rd iteration. So 10%7=3 as same as array rotated 3 times You don't have to rotate extra 7 times Hope I'm clear 😅
# rotate array by k elements def rot(arr, k): if len(arr) < k: print("error") else: for i in range(k): x = arr[0] arr.append(x) arr.pop(0) print(arr) rot([1,2,3,4,5,6],3)
It's basically when your value of k is greater than the length of the array. Looking at a simple example, if your array is [1,2,3] and your k is 5, the final array is going to be the same even if you reverse it 2 times (which is equal to n%k). If you don't do this, you will get an error since you try to access an index which is out of bounds, i.e, there is no index (3,4,5) if your array size itself is only 3
That is to avoid the unnecessary computation when k > nums.length. Suppose k=15 and nums.length is 7. You can rotate the whole array by 1 and no need for doing it for 15 times.
Yes you are right...Some tricks should be learned and remembered and this is the knowledge base we have in our brain.Later we recall these database in our head to solve harder problems.
Bro I was trying to do this problem before looking at the solution for about hour and half and what you said at he beginning make since so much. Thank you.
thank you for the great advice, Nick! I wasted many hours on this problem trying to come up with an O(n) and eventually exasperated looked at the solution LOL! Do you think a problem like this would come up in an interview where the optimal solution involves knowing a trick that can't found out in a 1-hour interview? Another example would be the one that involves using Kadane's algorithm... I would appreciate your views on this.
I usually just do 10-20 minutes initial planning -> 10 minutes coding and editing -> 30 minutes analyzing the solution if no luck or at least close to solving it. 1 problem a day with a max of 1 hour spent.
I second you bro! We shouldn't be wasting time, as we have plenty of free solutions on internet. Learn and then create your own solution, which is a fact and absolute truth!!
There's an easier way to do this. In your for-loop, take the i-th element and add it by k and mod the length of the array. That's it. So you just insert the i value at i+k%(lengthOfArray).
I figured out a solution which calculates the designated index for each element after the rotation, and stores it in a hashmap then puts each one in their place afterwards, but its not constant space.
This method will take O(2n) so effectively O(n). However if we go by rotating array by single element(ie. temp = arr[0]; shift all element to left arr[i] = arr[i+1]; arr[n-1] = temp inside a for loop) and repeat it for k times ..this will be done in O(n*k) complexity. Still there is one more approach name juggler array rotate method which is the most efficient approach for rotation so far and that takes little more effort to understand. I guess people who are asking to move this problem to medium level of toughness are trying to understand juggler approach.
Lol so your big brain solution to solving interview problems is to study all the problems so you can come up with a solution without knowing how to actually solve it. Wow why didn't I think of that.
this(reversal algo) approach is great and easy but I am facing a hard time implementing it with the block swap algorithm. If anyone can explain that it will be really helpful.
What I miss here is an explanation of why k is k % nums.length. Like thats actually very important to know as well to be able to solve this problem imo.
That is to avoid the unnecessary computation when k > nums.length. Suppose k=15 and nums.length is 7. You can rotate the whole array by 1 and no need for doing it for 15 times.
@ Asher -That is to avoid the unnecessary computation when k > nums.length. Suppose k=15 and nums.length is 7. You can rotate the whole array by 1 and no need for doing it for 15 times.
@@priyankavarahagiri3104 Well I know that. I am just saying that I'd wish he would have explained it a bit more why 2000 % 2 == 2 % 2 (for example). S'all good
I *really* don't understand all the negativity. Doing it in O(1) space was a FOLLOW-UP. It's NOT a trick question. There are a lot of other solutions that you can do with extra space. That's why it's an Easy. By the way, it's not a binary choice between looking at the solution or struggling for hours. I spent some time and got a very messy O(1) solution based on cycle sort. Then I looked at Hint 3 to use reversal and was able to figure out the rest of that approach on my own. Yes, you can look at a solution if you're stuck, but you learn more when you take a small hint and continue on your own.
That was very important advice not to spend hours trying to crack something. Seen so many folks spending hours as if this is a life and death situation burn hours and barely solve a few problems in a month. Look at the solutions if you can't crack it, digest and move on. The more problems and patterns one can digest would help you solve some unseen problem on the interview.
my friend wasted 5 days on a problem , eventually ended up looking at the solution
I solved the add two numbers for a month.
two years later, your comment just made me realize something i have been struggling with for 5 years.. I guess you can try for sometime, if you don't get it, look at the solution, understand it very well and you will remember the patterns without even trying. And by remembering the patterns, it means you can apply it to another problem
@@kushagraahire1871 🤣🤣🤣🤣
What you said about not stressing on problem for long is absolutely true Bruh !
Three years later, your comment just made me realize something i have been struggling with for 5 years.. I guess you can try for sometime, if you don't get it, look at the solution, understand it very well and you will remember the patterns without even trying. And by remembering the patternd, it means you can apply it to another problem
That is so true! I used to waste a lot of time on one single question but lesson learnt! I feel like I am getting better everyday. Thank you! :)
Three years later, your comment just made me realize something i have been struggling with for 5 years.. I guess you can try for like 20 minutes, if you don't get it, look at the solution, understand it very well and you will remember the patterns without even trying. And by remembering the patterns, it means you can apply it to another problem. It is not a matter of life and death.. It comes from practice.. Hopefully, i will get there someday
I agree with ya. It's sad on the state of things. Basically instead of working for your employer doing real work, people are secretly burning themselves out to memorize these 'tricks' to go for that next employer. And go in to an interview for a lottery and hope that it's a 'trick' you have memorized and applicable to the problem of the day. It's basically a lose-lose situation. As a current employer you lose, and as an employee seeking mobility you lose. Your future employer feels smug putting you through the ringer, until secretly productive drops to nothing because their current employee is also wasting his/her life studying and memorizing tricks. It's a vicious cycle.
It'd make too much sense if prospective employers actually look for skills that you'd build up in an actual day to day job. The skills that'd actually help them in their business day to day. Nope, makes way too much sense. Can't do.
I have used BFS/DFS Zero times in my career as both 9 years of C Firmware Engineer and 4 years of iOS engineer. The concept itself can be picked up when needed in 10 minutes. And does not need trick questions to proof understanding. Yet people and grilled for perfection in applying them to all sorts of 'trick' questions. What for?
So true !!
I wish there was a resource available for learning these "tools" then another section devoted to practicing these tools building on your knowledge.
Exactly! I used to spend an enormous amount of time on a single question, but I've grown from that. I truly feel like I'm becoming better with each passing day. Thank you for everything!
you are my absolute favorite youtuber to watch while studying for tech interviews
Came for the explanation of the problem, but stayed for the advice! Thanks Nick!
True I spent hours thinking, my ego always comes like I can solve this easy problem without taking any hint. We cannot spend time like this. We do not need to mug up this particular problem rather than we have to understand the concept which will help in solving any problems like this or we can use this concept where it can be useful. It's ok to take a bit of a hint to train our minds. Thank you Nick for your advice.
I spent two days on this problem before finding this video.
At the time, I was telling myself that if I skipped the struggle, I'd be missing out on a valuable learning experience. It was still fun, for a bit.
This is what I have learnt:
Sometimes, you can cheat yourself by _not_ looking at the solution.
Like others and yourself have said, the people who originally came up with these tricks may have worked for much longer or been lucky to spot them.
But more importantly, I think skipping to the solution can sometimes impart other useful lessons, such as that sometimes the answer is a trick, or that there's a radically different way of thinking about things. And that's valuable.
It's not like you just come away from reading a solution only knowing the solution. Sometimes it also imparts nuggets of insight and wisdom beyond the immediate answer to the problem.
stop wasting time on writing this much
I really needed to hear these words after this problem, I really felt down. Thanks Nick.
My left ear understood the solution really well. Thank you!
He's ending advice is really good. I only just figured it out recently, spend about 20-30 mins thinking of solution, if you can't get it. Learn it
Thanks a lot for making this video Nick. I just marked it down - "If you are struggling with a problem more than 20 or 30 mins , you are wasting you time ." It's a lesson worth noting down. Thanks :)
Just imagine you got frustrated thinking of a solution, then came here, and this dude again starts yelling.
Anyways, great job, Nick. Really appreciate your work!
~The Much Needed advice~
*We just learn things!!!!!!!!!!!!!!*
People are always stressing about how you shouldn't look at the solution and try to solve it yourself ,but no one gives this advice
we arent Einstein. Thanks Nick
Today I learned a great life lesson. Thank you so much man
You're right. The answer is always so easy to understand! And I always feel myself as a total dumbass for not solving it myself 😂
Obviously, you are not the only dumbass :(
Nick, you are such an inspiration! I spent nearly 2 hours figuring it out but in vain. What you said is absolutely right. It is ok to fail and look at the solution sometimes. We can't be correct always. Thank you so much :)
hello
I spent 2 days
That 2 hours are not waste of time actually.
i waste my 1 hour by learning many methods but i see this method and finally i apply this method
Very practical advice on cracking theses tech interviews. It begs the question about the value of these interviews.
what is the purpose of doing mod of k with the array length ! can anyone explain me in detail ???
Because if the value of k is greater than size of array we don't have to rotate the array k times.
Eg array size is 7 let's say and if we are supposed to rotate it 10 times then that 10th iteration would give us the array rotated in such a fashion that it'll be exact same as 3rd iteration.
So 10%7=3 as same as array rotated 3 times
You don't have to rotate extra 7 times
Hope I'm clear 😅
That's correct. More than 20-30 mins no headway look at the solution. The way we used to solve algebra or trigonometry in high school!
The most beautifully explained....
Very appreciate your effort.
Thanks.
true sometimes its best to just look at the solution. way more efficient than just figuring it out on your own
can anybody solve a doubt
we are doing the changes in the reverse nums array how it is reflected to the method rotate nums array
I was struggling to understand the approach. That explanation in the solution was to the point. Thanks 🙏
Nick I loved the rant. I was on this question for two hours trying to figure it out. You really just called me out lol
# rotate array by k elements
def rot(arr, k):
if len(arr) < k:
print("error")
else:
for i in range(k):
x = arr[0]
arr.append(x)
arr.pop(0)
print(arr)
rot([1,2,3,4,5,6],3)
Thanks man, this video did change my outlook on how to solve problems in general.
i would have got the algo anywhere but dude that advice was so good thanks !!
can anybody solve a doubt
we are doing the changes in the reverse nums array how it is reflected to the method rotate nums array
I was sitting on this question for about 2 hours. Wish I saw this video sooner. Thanks man.
same
You are unique and awesome bro. It's very hard to find people like you who explains complex topics in a dead easy way.
can anybody solve a doubt
we are doing the changes in the reverse nums array how it is reflected to the method rotate nums array
True man ....u tell everything that we all go through while solving the problem
Can someone clearly explain what the k%=nums.length is doing here please
It's basically when your value of k is greater than the length of the array. Looking at a simple example, if your array is [1,2,3] and your k is 5, the final array is going to be the same even if you reverse it 2 times (which is equal to n%k). If you don't do this, you will get an error since you try to access an index which is out of bounds, i.e, there is no index (3,4,5) if your array size itself is only 3
@@pjac744 thank you so much
That is to avoid the unnecessary computation when k > nums.length. Suppose k=15 and nums.length is 7. You can rotate the whole array by 1 and no need for doing it for 15 times.
BROOOO THE FIRST SOLUTION BLEW MY MIND, OMG. I NEED TO BUY LEETCODE PREMIUM ASAP NO ROCKY.
Yes you are right...Some tricks should be learned and remembered and this is the knowledge base we have in our brain.Later we recall these database in our head to solve harder problems.
Thanks a lot for the video. How come the complexity for this is O(n+k) ? Can someone help me here ?
Thnks nick , you are an inspiration to overcome my fear from DS & Algo ...Awesome
Bro I was trying to do this problem before looking at the solution for about hour and half and what you said at he beginning make since so much. Thank you.
He knows if we are stressed or not. Thanks bro for the help. Appreciate you.
Thanks for amazing explanation and important advice to solve problems
thank you for the great advice, Nick! I wasted many hours on this problem trying to come up with an O(n) and eventually exasperated looked at the solution LOL! Do you think a problem like this would come up in an interview where the optimal solution involves knowing a trick that can't found out in a 1-hour interview? Another example would be the one that involves using Kadane's algorithm... I would appreciate your views on this.
I can't believe how easy this is omg thank you! Saved so much time...
but its not easy
Lol Nick White, always finds a way to be entertaining. *Positive*
Outstanding advice, Nick. Thanks for making such awesome videos.
You always motivate me brother.
6:10 this is a good advice actually.
I usually just do 10-20 minutes initial planning -> 10 minutes coding and editing -> 30 minutes analyzing the solution if no luck or at least close to solving it. 1 problem a day with a max of 1 hour spent.
Man I watched you u since my clg , one day hope I will meet you legend!
can anybody solve a doubt
we are doing the changes in the reverse nums array how it is reflected to the method rotate nums array
Hey Nick I think the juggling algorithm would be more efficient for doing this rotation. What is your thought about it?
thanks man for advice !! you are helping me alot.
4:27 *That's why it's easy, coz it's easy*
*U N D E R R A T E D*
Nick- "It's not hard"
Me - *Stuck in this shit for 3 hours*
Me - "I choose the wrong career" :)
Thanks
Not only for the problem
But also for the advice
That was so precious🙃
Hey was k = k%nums.length kind of a check that arrray's size always stays greater than k.?
Brilliant thank you so much for explanation and advices.
I guess you are right! The goal is to prepare for the interview and not to invent the wheel from scratch.
I second you bro! We shouldn't be wasting time, as we have plenty of free solutions on internet. Learn and then create your own solution, which is a fact and absolute truth!!
There's an easier way to do this. In your for-loop, take the i-th element and add it by k and mod the length of the array. That's it. So you just insert the i value at i+k%(lengthOfArray).
can anybody solve a doubt
we are doing the changes in the reverse nums array how it is reflected to the method rotate nums array
Great words of wisdom Nick!
very good solution brother.
They finally put it in Medium catagory ,
nick thank brother i like way of your thinking
Nice rant(wisdom) at the beginning!
Could anybody explain why we need to use a remainder from division?
awsome solution and easy to follow thanks had an O(n) solution but was like mmmmm needs to be better this was def the trick i was missing
Very nice and well said, I like your strategy to solve these types of problems.
Thank you for great advise :)
Thanks, Bro, much appreciated.
>"it's easy"
>8 months ago wrong answer
>10 months ago wrong answer
Jesus, Nick, you are my god by saying "You just learn it"
i wish ur channel gets higher reach.
Great advice nick!
exactly my thoughts, 100% agree
That's great! Can you put a video on juggling algorithm, please???
can you explain block swap algorithm program??
How would you rotate the array in the opposite direction?
For 2nd and 3rd rotation, subtract k with n. rotate(0, n-k-1) rotate(n-k, n-1)
Thank you but how to swithc it to the left? For example [1,2,3,4,5,6] rotated by two becomes [3,4,5,6,1,2].
I figured out a solution which calculates the designated index for each element after the rotation, and stores it in a hashmap then puts each one in their place afterwards, but its not constant space.
In 2023 it's a medium level.
I literally spent a day trying to solve this
This method will take O(2n) so effectively O(n). However if we go by rotating array by single element(ie. temp = arr[0]; shift all element to left arr[i] = arr[i+1]; arr[n-1] = temp inside a for loop) and repeat it for k times ..this will be done in O(n*k) complexity. Still there is one more approach name juggler array rotate method which is the most efficient approach for rotation so far and that takes little more effort to understand. I guess people who are asking to move this problem to medium level of toughness are trying to understand juggler approach.
can anybody solve a doubt
we are doing the changes in the reverse nums array how it is reflected to the method rotate nums array
I'm confused by the reverse function. Doesn't Java only pass by value? How does it alter the original nums array?
Ok so arrays are objects in java and java allows you to modify objects in place. Can't believe I didn't know that.....
Lol so your big brain solution to solving interview problems is to study all the problems so you can come up with a solution without knowing how to actually solve it. Wow why didn't I think of that.
Can you please explain the Cyclic Replacements approach as well! Thanks!
@Chistiy Kot 🤣
Hi Nick.. Do we need to buy leetcode premium account for solutions ?
I know what video I need to watch if I am stressed
Alternatively you can use doubly linked list and just pop out last element to front k times. That's it. O(N) Solution.
subcribed keep posting such content
Update this is in medium now!!
this(reversal algo) approach is great and easy but I am facing a hard time implementing it with the block swap algorithm.
If anyone can explain that it will be really helpful.
How is this better then allocating one more array and doing one traversal? I was thinking they do one traversal without additional array to solve it
What I miss here is an explanation of why k is k % nums.length. Like thats actually very important to know as well to be able to solve this problem imo.
That is to avoid the unnecessary computation when k > nums.length. Suppose k=15 and nums.length is 7. You can rotate the whole array by 1 and no need for doing it for 15 times.
@ Asher -That is to avoid the unnecessary computation when k > nums.length. Suppose k=15 and nums.length is 7. You can rotate the whole array by 1 and no need for doing it for 15 times.
@@priyankavarahagiri3104 Well I know that. I am just saying that I'd wish he would have explained it a bit more why 2000 % 2 == 2 % 2 (for example). S'all good
I was not able understand Approach#3 given in solution on LeetCode .Any help would be appreciated.
why did u take k =k%nums.length ??
Man you are god!! much needed motivation thanks :)
thanx bro ....for the advise
I *really* don't understand all the negativity. Doing it in O(1) space was a FOLLOW-UP. It's NOT a trick question. There are a lot of other solutions that you can do with extra space. That's why it's an Easy.
By the way, it's not a binary choice between looking at the solution or struggling for hours. I spent some time and got a very messy O(1) solution based on cycle sort. Then I looked at Hint 3 to use reversal and was able to figure out the rest of that approach on my own. Yes, you can look at a solution if you're stuck, but you learn more when you take a small hint and continue on your own.