Next Permutation | Leetcode #31

Поділитися
Вставка
  • Опубліковано 23 січ 2025

КОМЕНТАРІ • 166

  • @life_of_anjali
    @life_of_anjali 3 роки тому +79

    Great explanation! I think this approach can be modified to make the complexity O(n) by avoiding sorting. After swapping is done, it can be observed that all elements after the left index selected for swapping till the end of the array will be reverse sorted. So, we only need to reverse array after the left swapped index.

  • @darshansimha2166
    @darshansimha2166 3 роки тому +52

    Great explanation, how the hell do we come up with a solution with so many edge cases in an interview where you have 30 minutes at best? 😩

  • @Cocoblu2
    @Cocoblu2 3 роки тому +14

    At first I was confused by what the question was actually asking, but watching the whole explanation it became clearer and the approach really made sense. Thanks!

  • @parthokr
    @parthokr 3 роки тому +4

    That graph representation just blew my mind.

  • @art4eigen93
    @art4eigen93 2 роки тому +2

    wow! reduction at work guys. The whole world is running upon two things 1. reduction 2. approximation.

  • @vcfirefox
    @vcfirefox 3 роки тому +6

    This is absolutely the best explanation I found after almost getting paralyzed by the question. Thanks!

  • @srikantd6054
    @srikantd6054 3 роки тому +15

    So far the best content I have ever seen and best channel for DS and Algo.

  • @gouthamr8214
    @gouthamr8214 2 роки тому +1

    This is O(n) , we don't require the last sorting part as the elements are already sorted but in reverse order. So simply swapping that would works.

  • @afridimajeed5897
    @afridimajeed5897 3 роки тому +4

    I no longer dread this problem, great explanation!

  • @dikshantboora3764
    @dikshantboora3764 2 роки тому +2

    very much better than striver

  • @payalshekhawat7563
    @payalshekhawat7563 3 роки тому +6

    I was struggling with this question. You made it easier ..thank you so much for this amazing explanation!!

  • @chiragsahu5468
    @chiragsahu5468 3 роки тому +5

    Best explanation i have seen. I was unable to understand what is next permutations. U taught me that. Thank you 😊

  • @shobhanksharma65
    @shobhanksharma65 3 роки тому +2

    O(n) code:
    public void nextPermutation(int[] nums) {
    int peak = nums.length-1;
    // find peak from right
    while(peak>0) {
    if(nums[peak] > nums[peak-1]) {
    break;
    }
    peak--;
    }
    if(peak==0) { // all numbers are descending, so reverse
    reverse(nums, 0, nums.length-1);
    } else {
    int i = peak-1;
    int j = nums.length-1;
    // find a number greater than that at i and has as low weight as possible
    // this is to find lowest number greater than the number to be swapped so that we can get next higher number
    while(j>i && nums[i] >= nums[j]) j--;
    swap(nums, i, j); // i+1 till end of array is descending ordered
    if(i

  • @jsuryakt
    @jsuryakt 2 місяці тому

    I really understood this after watching 3 videos, the graph and peak explanation with decimal breakdown made it clear

  • @abhishekjadoun7562
    @abhishekjadoun7562 3 роки тому +3

    was looking for this Question and then you just uploaded this video.
    Best explanation for this Question !!!!

  • @krentwhite2668
    @krentwhite2668 3 роки тому +10

    If you get this qn in an interview... u can easily pass time by explaining this approach... btw crystal clear explanation sir🙏

  • @pratosh
    @pratosh 2 роки тому +1

    More simpler approach:
    public void nextPermutation(int[] nums) {
    int n=nums.length;
    if(n=0 && nums[i]>=nums[i+1])
    i--;

    if(i>=0){
    int j=n-1;
    while(nums[j]

  • @satheeshshanmugam5940
    @satheeshshanmugam5940 3 роки тому +1

    Great Great .. Explained well with different cases... All of my queries are resolved .. thank you so much ..

  • @aditisinghh
    @aditisinghh 3 роки тому +4

    i am always looking for this channel if i want explaination of any questions . saves me a lot of time !!! 💛

  • @johncenakiwi
    @johncenakiwi 3 роки тому +2

    It is almost impossible to come up with a solution to this in an interview setting, if you haven't already solved this question before.
    It is one of those questions, if you know, you know.

  • @TheSridharraj
    @TheSridharraj 3 роки тому +1

    Best explanation i have ever seen

  • @minatokuns1810
    @minatokuns1810 2 роки тому +1

    best explanation so far.. there was some part which should have explanied more with the code though..

  • @mercymutuku4525
    @mercymutuku4525 17 днів тому

    You're the best 🎊💯. The explanation was enough for me to code it up.

  • @dhanashreegodase4445
    @dhanashreegodase4445 3 роки тому +1

    you deserve more likes yar... great video

  • @abhijit-sarkar
    @abhijit-sarkar Рік тому +1

    Here's the logic in simple terms without the confusion of multiple special cases. Since a descending sequence is already at its largest value, we can't get the next larger sequence from it. We therefore find the first ascending pair a[i] > a[i-1] from the end, and swap a[i-1] with the smallest possible value on the right that is larger than it. Since a[i-1] has been increased in value, the sequence a[i:] must be set to its smallest value to give the smallest next larger sequence, which is given by the ascending order. Furthermore, since we swapped a[i-1] with the smallest possible value on the right, say a[j], all elements in sequence a[j+1:] are smaller than a[i-1], and all elements in the sequence a[i:j] are larger than a[i-1]. Thus, the sequence a[i:] is in descending order, and can be made ascending by using two pointers to swap elements from both ends.

    • @alwinsanthosh6878
      @alwinsanthosh6878 4 місяці тому

      My goodness, this is an absolute banger of an explaination. tysm

  • @paragroy5359
    @paragroy5359 3 роки тому +4

    Sir in all your previous vides I used to get the logic pretty easily....but in this video I struggled a lot....I think the question is quite tricky..

  • @tanishhhhhhh
    @tanishhhhhhh 2 роки тому +1

    great explaination of the question

  • @beaglesnlove580
    @beaglesnlove580 3 роки тому +1

    This was amazing description thank you

  • @Ajeet-Yadav-IIITD
    @Ajeet-Yadav-IIITD 3 роки тому +6

    OMG!!! I'm feeling lucky that UA-cam recommend me your channel🥰, You are amazing!!....Thank you for the good work sir!

  • @jlecampana
    @jlecampana 2 роки тому +2

    Great Explanation, but I still think this is an Awful Question for an Interview.

  • @FOODASMRFAMILY
    @FOODASMRFAMILY 3 роки тому +1

    amazing explanation with diagram approach

  • @SHUBHAMYADAV-bs8vl
    @SHUBHAMYADAV-bs8vl 3 роки тому +3

    Great explanation sir!, I find this problem difficult to solve, but after watching your video, it makes me easy to solve.

  • @ninhbinhhuynh7619
    @ninhbinhhuynh7619 3 роки тому +2

    This is the best explaination about this problem, thank you so much 🙏

  • @TheBaljitSingh
    @TheBaljitSingh 6 місяців тому

    it was a great explanations video. i finally understand the #concept

  • @rajatgoyal8155
    @rajatgoyal8155 3 роки тому +3

    Best explanation for this problem....👍👍
    Thank you so Much for such a detailed explanation...🙂

  • @madhavanr8996
    @madhavanr8996 3 роки тому +2

    Can u pls explain the last line of code that starting from sort(nums.begin()......

  • @harpercfc_
    @harpercfc_ 2 роки тому +1

    Very useful one. Thank you sir

  • @selvaprasanths2202
    @selvaprasanths2202 3 роки тому +2

    The best of all 🎉🔥please keep onposting

  • @amitmohapatra292
    @amitmohapatra292 2 роки тому +1

    can anyone tell me what kind of questions is this i mean under which concept is it coming ?

  • @大盗江南
    @大盗江南 9 місяців тому

    Thanks, i like ur videos the most among all.

  • @rushikeshkulkarni1784
    @rushikeshkulkarni1784 3 роки тому +1

    What if we get peak at 0th index but other half is not sorted..
    eg. 3 1 2

  • @shriyasonam2716
    @shriyasonam2716 2 роки тому +1

    beautifully explained!!!

  • @brijvaghani6212
    @brijvaghani6212 2 роки тому +1

    Very well explained 🤜

  • @radhasingh3549
    @radhasingh3549 2 роки тому +2

    Amazing explanation😍

  • @stoicbro1635
    @stoicbro1635 2 роки тому +1

    beautiful explanation

  • @manojs157
    @manojs157 2 роки тому +2

    Great explanation thank you

  • @LalitPandeyontube
    @LalitPandeyontube 2 роки тому +1

    such a great explanation

  • @mahipalsingh-yo4jt
    @mahipalsingh-yo4jt 3 роки тому +2

    This channel saves me everytime:)

  • @kasturisanyal6649
    @kasturisanyal6649 3 роки тому +6

    The explanation is so good and every detail is covered throughly. A hard problem made easy. Thank You so much:)

  • @stark3.148
    @stark3.148 3 місяці тому

    Sorting is not required, we can just reverse that decreasing sequence in the end. It will automatically sort the array

  • @sekharsamanta6266
    @sekharsamanta6266 Рік тому

    Wow! such a clear explanation...thank you

  • @hridamchakraborty6818
    @hridamchakraborty6818 3 роки тому +2

    thank you so sooo much.. the explanation is great ..

  • @elmalkiahmed-v7o
    @elmalkiahmed-v7o 3 місяці тому +1

    thanks dude, this is a very helpful vedio

  • @maksymmoroz
    @maksymmoroz Рік тому

    Thank you man, you helped me! Very clear

  • @gokulnaathbaskar9808
    @gokulnaathbaskar9808 2 роки тому +1

    Thank you, Sir, this was nice

  • @tridoan7383
    @tridoan7383 3 роки тому +1

    Great explanation

  • @gauravraj2604
    @gauravraj2604 3 роки тому +1

    Great explanation. Thanks a lot

  • @ullasbc728
    @ullasbc728 2 роки тому

    Good Explanation! Thank You

  • @outsider9633
    @outsider9633 3 роки тому +1

    Cant we replace the last for loop by :
    int index = lstpeak;
    if (arr[lstpeak + 1] > arr[lstpeak - 1]) index = lstpeak + 1;
    EDIT: no we cant , we need to replace lst-1 with the minimum element in the right of lstindex

  • @ganavin3423
    @ganavin3423 2 роки тому

    Thanks .it helped me understood

  • @codingnightmares3407
    @codingnightmares3407 3 роки тому +2

    Thanks a lot!
    Best explanation 🧡

  • @praharshsingh2095
    @praharshsingh2095 3 роки тому +1

    at 16:12 u said that , if u have to swap the last n-1 elements the time complexity will be nlogn, but is there is a possibility that , last n-1 will be sorted in decreasing order , so we can use two pointers to make it sorted in increasing order,resulting in optimized time complexity of O(n/2) or O(n) ?

  • @ishwaripednekar5164
    @ishwaripednekar5164 3 роки тому +2

    Really appreciated ❤️

  • @handlerhandle123
    @handlerhandle123 3 роки тому +2

    Graph helped thank you

  • @waliullahsiam7999
    @waliullahsiam7999 2 роки тому +1

    thank you so much for such a beautiful explanation may god bless you

  • @kaushikramabhotla4635
    @kaushikramabhotla4635 3 роки тому +2

    Maja aagya sir 🙌

  • @sujalhansda8285
    @sujalhansda8285 3 роки тому +1

    Brilliant !

  • @MrChetan54
    @MrChetan54 2 роки тому

    Too many edge cases in the explaination, but code doesn't have many. Ayushi Sharma has also provided with good explaination, incase you feel this video is li'l tough

  • @mohdfarhanahmed9416
    @mohdfarhanahmed9416 3 роки тому +2

    Bhai can you also provide the code in java in the upcoming videos. It would be very helpful for many of java geeks.

  • @shubhamchavan1387
    @shubhamchavan1387 3 роки тому +2

    Thank you!

  • @thinkverse94
    @thinkverse94 3 роки тому +1

    Hi Suriya bro,
    I've one doubt. Can you please clarify for me?
    Last 3 years I'm working as a manual and automation tester in Embedded Networking, somehow I entered into this domain, but I've been self-interested in coding & want to be a developer. but, in the developer interview, I don't have an experience of dev to show. I'm not getting interested to work on testing, my minds want to be a developer but not able to do. It's internally hurting me a lot. what to do? Need your suggestion, please.

  • @praveengautam4689
    @praveengautam4689 2 роки тому +1

    genius...:)

  • @gautam4696
    @gautam4696 3 роки тому +2

    Bhai you are the best

  • @shivamagrawal3542
    @shivamagrawal3542 3 роки тому +1

    What is the time complexity here?

  • @gokulnaathbaskar9808
    @gokulnaathbaskar9808 2 роки тому

    This was beautiful, thank you

  • @anubhavsethi7728
    @anubhavsethi7728 3 роки тому +2

    Well explained 👌🏻👌🏻💯💯

  • @quirkyquester
    @quirkyquester 4 місяці тому

    you're the man broo! Thx!

  • @Karanyadav-cd4sq
    @Karanyadav-cd4sq 3 роки тому +2

    rather than sorting we can reverse it, so making the complexity go from o(nlogn) to o(n)

  • @ShivamGupta-cx3hy
    @ShivamGupta-cx3hy 3 роки тому +1

    Awesome Teacher

  • @qazaqempire3828
    @qazaqempire3828 2 роки тому +1

    what a horrible question , the only way is to memorize this - it needs a trick to know. read the comments under the official solution on leetcode! they all complain and justfiedly

  • @ganeshjaggineni4097
    @ganeshjaggineni4097 2 місяці тому

    NICE SUPER EXCELLENT MOTIVATED

  • @satyanarayanagokavarapu3011
    @satyanarayanagokavarapu3011 3 роки тому +2

    Can you explain Integer to English words leetcode 273 problem ?

    • @techdose4u
      @techdose4u  3 роки тому +1

      Sure. It's very important for FAANG :)

    • @satyanarayanagokavarapu3011
      @satyanarayanagokavarapu3011 3 роки тому +2

      @@techdose4u Word break and word break 2 problems . Expecting these two from you long back very important for all FAANG . Can you please take these two into your list ? Thank you for helping us.

    • @techdose4u
      @techdose4u  3 роки тому

      Sure

  • @formulaire.8379
    @formulaire.8379 6 місяців тому

    why we dont just use next_permutation ?

  • @themountains1701
    @themountains1701 2 роки тому +1

    It's not working.

  • @ghanishsingla8270
    @ghanishsingla8270 10 місяців тому

    Code link doesn't work, getting 404.

  • @samakshtandon1190
    @samakshtandon1190 3 роки тому

    excellent explanation. just one thing. instead of sorting the last part we can just reverse it in o(n/2) time since it will always be in descending order. but in this case we just have to make sure if there are two places where i can make a change then i select the further one.eg:[2,3,1,3,3].

  • @KarthikNandam-xs4qn
    @KarthikNandam-xs4qn 3 місяці тому

    Amazing 🤩

  • @Purubro
    @Purubro Рік тому

    Level ka observation h vaiya

  • @tech_wizard9315
    @tech_wizard9315 3 роки тому +1

    Plz make a detailed video on how to develop LinkedIn profile so strong that recruiters Of top companies can't resist to give job opening opportunities and internship opportunities specially for 2020grads (unplaced)

    • @iamparitosh
      @iamparitosh 3 роки тому +1

      The only secret to nailing Linkedin is to be successful in real life. Do extraordinary things only when that will happen; No shortcuts whatsoever

    • @tech_wizard9315
      @tech_wizard9315 3 роки тому

      @@iamparitosh along with good work, if you customize your account to make it look more presentable, it can help too!

  • @nishant5249
    @nishant5249 2 роки тому

    At 4:30 your explanation is not correct... If you check the striever video explanation then you can spot the mistake

  • @chiragPatel22c
    @chiragPatel22c 2 роки тому

    very appreciate your hard work, seen many videos regarding the same topic, Found your video the best explanation and clearing all blurry clouds. Thanks again😊😊. All the best 👍👍

  • @coder1015
    @coder1015 3 роки тому +2

    Amazing ;)

  • @Ayon-Karmakar
    @Ayon-Karmakar 2 роки тому

    Found a mistake 12:51 [2,4,3,2] -> ngs is not [2,4,2,3]

  • @GeetainSaar
    @GeetainSaar 7 місяців тому

    Better than striver

  • @user-jp9jd6el1f
    @user-jp9jd6el1f Рік тому

    Sir plz apni facevalue bhi banaaiye

  • @andriidanylov9453
    @andriidanylov9453 Рік тому

    Appreciate

  • @takumisugita936
    @takumisugita936 2 роки тому +1

    medium btw

  • @PujaKumari-rp5sg
    @PujaKumari-rp5sg 17 днів тому

    💗

  • @rhs1078
    @rhs1078 10 місяців тому

    Worst explanation ever

  • @saikatpaul6576
    @saikatpaul6576 Рік тому

    how did you rearrange the next greater sequence, its confusing as I am not understanding whats the next greatern sequence means

    • @manojjain3501
      @manojjain3501 11 місяців тому

      Minimum of all greater permutations of given number. Ex 1386 -> Next minimum should be 1638 ( It is lowest of any combination of greater permutations )