LeetCode Rotate Array Solution Explained - Java

Поделиться
HTML-код
  • Опубликовано: 13 дек 2024

Комментарии • 199

  • @shreejitnair2174
    @shreejitnair2174 5 лет назад +224

    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.

    • @kushagraahire1871
      @kushagraahire1871 2 года назад +5

      my friend wasted 5 days on a problem , eventually ended up looking at the solution

    • @AshutoshKumar-es8xy
      @AshutoshKumar-es8xy 2 года назад +4

      I solved the add two numbers for a month.

    • @samuelvalentine7846
      @samuelvalentine7846 2 года назад +4

      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

    • @devDive615
      @devDive615 Год назад +1

      @@kushagraahire1871 🤣🤣🤣🤣

  • @aghavvikas
    @aghavvikas 5 лет назад +149

    What you said about not stressing on problem for long is absolutely true Bruh !

    • @samuelvalentine7846
      @samuelvalentine7846 2 года назад +1

      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

  • @vm1662
    @vm1662 5 лет назад +71

    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! :)

  • @samuelvalentine7846
    @samuelvalentine7846 2 года назад +5

    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

  • @biscottigelato8574
    @biscottigelato8574 4 года назад +9

    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?

  • @CCV334
    @CCV334 4 года назад +15

    I wish there was a resource available for learning these "tools" then another section devoted to practicing these tools building on your knowledge.

  • @Rohan004
    @Rohan004 Год назад +2

    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!

  • @ruthylevi9804
    @ruthylevi9804 3 года назад +1

    you are my absolute favorite youtuber to watch while studying for tech interviews

  • @ankit2056
    @ankit2056 3 года назад +2

    Came for the explanation of the problem, but stayed for the advice! Thanks Nick!

  • @AbhinavKumar-dr4ef
    @AbhinavKumar-dr4ef 2 года назад +1

    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.

  • @dangereuxdave
    @dangereuxdave 2 года назад +1

    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.

    • @batrasifars
      @batrasifars 2 месяца назад

      stop wasting time on writing this much

  • @farizma
    @farizma 3 года назад +1

    I really needed to hear these words after this problem, I really felt down. Thanks Nick.

  • @amogh_wagh
    @amogh_wagh 3 года назад +2

    My left ear understood the solution really well. Thank you!

  • @son0funiverse
    @son0funiverse 3 года назад

    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

  • @sunnysrivastav2470
    @sunnysrivastav2470 3 года назад +5

    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 :)

  • @TestingMonkey
    @TestingMonkey 2 месяца назад

    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!

  • @savvy9431
    @savvy9431 4 года назад +2

    ~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

  • @prateek8211
    @prateek8211 3 года назад +2

    Today I learned a great life lesson. Thank you so much man

  • @jamesmiller2521
    @jamesmiller2521 5 лет назад +18

    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 😂

    • @shusenacademy
      @shusenacademy 4 года назад +2

      Obviously, you are not the only dumbass :(

  • @umabharati9911
    @umabharati9911 5 лет назад +5

    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 :)

  • @top10thingwhichyoushouldkn37
    @top10thingwhichyoushouldkn37 4 года назад +3

    i waste my 1 hour by learning many methods but i see this method and finally i apply this method

  • @gregorywilson2124
    @gregorywilson2124 2 года назад

    Very practical advice on cracking theses tech interviews. It begs the question about the value of these interviews.

  • @mix_mash3703
    @mix_mash3703 Год назад +1

    what is the purpose of doing mod of k with the array length ! can anyone explain me in detail ???

    • @krishnar754
      @krishnar754 Год назад +2

      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 😅

  • @dipakkumarrai1442
    @dipakkumarrai1442 2 года назад

    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!

  • @dipabhow4630
    @dipabhow4630 6 месяцев назад

    The most beautifully explained....
    Very appreciate your effort.
    Thanks.

  • @snake1625b
    @snake1625b 3 года назад +1

    true sometimes its best to just look at the solution. way more efficient than just figuring it out on your own

    • @ashukashyap7142
      @ashukashyap7142 9 месяцев назад

      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

  • @EklakDangaura
    @EklakDangaura 11 месяцев назад

    I was struggling to understand the approach. That explanation in the solution was to the point. Thanks 🙏

  • @LuisGuarin-y4z
    @LuisGuarin-y4z Год назад

    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

  • @himquantum
    @himquantum 4 года назад

    # 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)

  • @divyanshuchaudhari5416
    @divyanshuchaudhari5416 4 года назад +1

    Thanks man, this video did change my outlook on how to solve problems in general.

  • @vighneshk509
    @vighneshk509 4 года назад +2

    i would have got the algo anywhere but dude that advice was so good thanks !!

    • @ashukashyap7142
      @ashukashyap7142 9 месяцев назад

      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

  • @ArbaazKhan-zc3gu
    @ArbaazKhan-zc3gu 4 года назад

    I was sitting on this question for about 2 hours. Wish I saw this video sooner. Thanks man.

  • @sivan2878
    @sivan2878 Год назад

    You are unique and awesome bro. It's very hard to find people like you who explains complex topics in a dead easy way.

    • @ashukashyap7142
      @ashukashyap7142 9 месяцев назад

      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

  • @Dyslexic_Neuron
    @Dyslexic_Neuron 4 года назад

    True man ....u tell everything that we all go through while solving the problem

  • @The-masked-girl-songs
    @The-masked-girl-songs 4 года назад +2

    Can someone clearly explain what the k%=nums.length is doing here please

    • @pjac744
      @pjac744 4 года назад +4

      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

    • @The-masked-girl-songs
      @The-masked-girl-songs 4 года назад

      @@pjac744 thank you so much

    • @priyankavarahagiri3104
      @priyankavarahagiri3104 4 года назад

      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.

  • @OverLordOfDa3rdWorld
    @OverLordOfDa3rdWorld 4 года назад +1

    BROOOO THE FIRST SOLUTION BLEW MY MIND, OMG. I NEED TO BUY LEETCODE PREMIUM ASAP NO ROCKY.

  • @saketkumar7335
    @saketkumar7335 3 года назад

    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.

  • @medharawat5648
    @medharawat5648 3 года назад +1

    Thanks a lot for the video. How come the complexity for this is O(n+k) ? Can someone help me here ?

  • @hackernight5110
    @hackernight5110 4 года назад +2

    Thnks nick , you are an inspiration to overcome my fear from DS & Algo ...Awesome

  • @alexshiferaw7180
    @alexshiferaw7180 4 года назад

    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.

  • @rameshshrestha9520
    @rameshshrestha9520 4 года назад

    He knows if we are stressed or not. Thanks bro for the help. Appreciate you.

  • @TayiAbhignyaBCE
    @TayiAbhignyaBCE 2 года назад

    Thanks for amazing explanation and important advice to solve problems

  • @savantdude
    @savantdude 5 лет назад +4

    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.

  • @aycanocal6506
    @aycanocal6506 3 года назад +1

    I can't believe how easy this is omg thank you! Saved so much time...

  • @son0funiverse
    @son0funiverse 3 года назад

    Lol Nick White, always finds a way to be entertaining. *Positive*

  • @rajeshseptember09
    @rajeshseptember09 Год назад

    Outstanding advice, Nick. Thanks for making such awesome videos.

  • @ayanakojikiyot
    @ayanakojikiyot 3 года назад

    You always motivate me brother.

  • @Emanuel-yb3qk
    @Emanuel-yb3qk Месяц назад

    6:10 this is a good advice actually.

  • @simondavis1303
    @simondavis1303 Год назад

    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.

  • @shiblijamal8544
    @shiblijamal8544 2 года назад

    Man I watched you u since my clg , one day hope I will meet you legend!

    • @ashukashyap7142
      @ashukashyap7142 9 месяцев назад

      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

  • @nilanjanmukhopadhyay8369
    @nilanjanmukhopadhyay8369 4 года назад +1

    Hey Nick I think the juggling algorithm would be more efficient for doing this rotation. What is your thought about it?

  • @sachinallugani3229
    @sachinallugani3229 2 года назад

    thanks man for advice !! you are helping me alot.

  • @srajankishorgupta1011
    @srajankishorgupta1011 4 года назад +3

    4:27 *That's why it's easy, coz it's easy*
    *U N D E R R A T E D*

  • @Chempox
    @Chempox 3 года назад

    Nick- "It's not hard"
    Me - *Stuck in this shit for 3 hours*
    Me - "I choose the wrong career" :)

  • @liftwithamey
    @liftwithamey 4 года назад +1

    Thanks
    Not only for the problem
    But also for the advice
    That was so precious🙃

  • @sanskarkaazi3830
    @sanskarkaazi3830 3 года назад

    Hey was k = k%nums.length kind of a check that arrray's size always stays greater than k.?

  • @mehmetakifyegin9307
    @mehmetakifyegin9307 2 года назад

    Brilliant thank you so much for explanation and advices.

  • @yaroslavsk6940
    @yaroslavsk6940 2 года назад +1

    I guess you are right! The goal is to prepare for the interview and not to invent the wheel from scratch.

  • @praveen123ist
    @praveen123ist 4 года назад

    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!!

  • @vivekparmar7576
    @vivekparmar7576 2 года назад

    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).

  • @ashukashyap7142
    @ashukashyap7142 9 месяцев назад +1

    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

  • @sweetsanch
    @sweetsanch 3 года назад

    Great words of wisdom Nick!

  • @satyamgupta6030
    @satyamgupta6030 Год назад

    very good solution brother.

  • @rohitk5252
    @rohitk5252 2 года назад +1

    They finally put it in Medium catagory ,

  • @skumakerguitar8708
    @skumakerguitar8708 3 года назад

    nick thank brother i like way of your thinking

  • @nikhilmishra7572
    @nikhilmishra7572 4 года назад

    Nice rant(wisdom) at the beginning!

  • @erwererwrwr
    @erwererwrwr Месяц назад

    Could anybody explain why we need to use a remainder from division?

  • @Endlessvoidsutidos
    @Endlessvoidsutidos 4 года назад

    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

  • @bedsingh
    @bedsingh 3 года назад

    Very nice and well said, I like your strategy to solve these types of problems.

  • @UnprivilegedDelhi
    @UnprivilegedDelhi 2 года назад

    Thank you for great advise :)

  • @akashbhadouria6727
    @akashbhadouria6727 5 лет назад +1

    Thanks, Bro, much appreciated.

  • @czerox16
    @czerox16 3 года назад

    >"it's easy"
    >8 months ago wrong answer
    >10 months ago wrong answer

  • @choulouchris8788
    @choulouchris8788 2 года назад

    Jesus, Nick, you are my god by saying "You just learn it"

  • @ramkaranmnit7280
    @ramkaranmnit7280 4 года назад

    i wish ur channel gets higher reach.

  • @snowpants123
    @snowpants123 5 лет назад

    Great advice nick!

  • @mashak3765
    @mashak3765 3 года назад

    exactly my thoughts, 100% agree

  • @jayasripalanisamy6838
    @jayasripalanisamy6838 4 года назад

    That's great! Can you put a video on juggling algorithm, please???

  • @abhishektambewagh6156
    @abhishektambewagh6156 3 года назад

    can you explain block swap algorithm program??

  • @wewonbro1620
    @wewonbro1620 3 года назад +1

    How would you rotate the array in the opposite direction?

    • @noobmaster69jr
      @noobmaster69jr 3 года назад

      For 2nd and 3rd rotation, subtract k with n. rotate(0, n-k-1) rotate(n-k, n-1)

  • @SergeSergey
    @SergeSergey 4 года назад

    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].

  • @milos5247
    @milos5247 4 года назад

    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.

  • @oxanasf6369
    @oxanasf6369 Год назад +1

    In 2023 it's a medium level.

  • @mrxXxkink
    @mrxXxkink 4 года назад +1

    I literally spent a day trying to solve this

  • @NitinKumar-vl3vx
    @NitinKumar-vl3vx 4 года назад +1

    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.

    • @ashukashyap7142
      @ashukashyap7142 9 месяцев назад

      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

  • @johnnymurf
    @johnnymurf 3 года назад

    I'm confused by the reverse function. Doesn't Java only pass by value? How does it alter the original nums array?

    • @johnnymurf
      @johnnymurf 3 года назад

      Ok so arrays are objects in java and java allows you to modify objects in place. Can't believe I didn't know that.....

  • @knokout1
    @knokout1 4 года назад +1

    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.

  • @aniketr95
    @aniketr95 4 года назад

    Can you please explain the Cyclic Replacements approach as well! Thanks!

    • @zoxx972
      @zoxx972 2 года назад

      @Chistiy Kot 🤣

  • @algorithmsguide5076
    @algorithmsguide5076 5 лет назад

    Hi Nick.. Do we need to buy leetcode premium account for solutions ?

  • @845aaa
    @845aaa 3 года назад

    I know what video I need to watch if I am stressed

  • @jaydangar7897
    @jaydangar7897 4 года назад

    Alternatively you can use doubly linked list and just pop out last element to front k times. That's it. O(N) Solution.

  • @Jatin-Rohilla.
    @Jatin-Rohilla. Год назад

    subcribed keep posting such content

  • @ayanagrawal
    @ayanagrawal 4 года назад +2

    Update this is in medium now!!

  • @dsamadeeasierwithpython3628
    @dsamadeeasierwithpython3628 4 года назад

    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.

  • @vklooping
    @vklooping 2 года назад

    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

  • @cloud15487
    @cloud15487 4 года назад

    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.

    • @priyankavarahagiri3104
      @priyankavarahagiri3104 4 года назад +4

      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
      @priyankavarahagiri3104 4 года назад

      @ 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.

    • @cloud15487
      @cloud15487 4 года назад +1

      @@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

  • @yagizegemen7303
    @yagizegemen7303 4 года назад

    I was not able understand Approach#3 given in solution on LeetCode .Any help would be appreciated.

  • @amritasingh5632
    @amritasingh5632 2 года назад

    why did u take k =k%nums.length ??

  • @divyatejaswinivengada6368
    @divyatejaswinivengada6368 4 года назад

    Man you are god!! much needed motivation thanks :)

  • @naveenkumardongre
    @naveenkumardongre 3 года назад

    thanx bro ....for the advise

  • @nikhil_a01
    @nikhil_a01 Год назад

    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.