Next Permutation | Leetcode #31

Sdílet
Vložit
  • čas přidán 6. 09. 2024
  • This video explains the next permutation problem which uses a very unique concept of creating the next greater sequence from an array. I have shown the entire intuition step by step using simple examples with reasons for each step.Please watch the entire video to get all the required concepts.
    CODE LINK is present below as usual. If you find any difficulty or have any query then do COMMENT below. PLEASE help our channel by SUBSCRIBING and LIKE our video if you found it helpful...CYA :)
    ======================================PLEASE DONATE=============================
    🧡 SUPPORT OUR WORK: / techdose
    💚 UPI-ID: surya.kahar@ybl
    💞JOIN Membership: / @techdose4u
    ==============================================================================
    INSTAGRAM : / surya.pratap.k
    LinkedIn: / surya-pratap-kahar-47b...
    WEBSITE: techdose.co.in/
    TELEGRAM Channel LINK: t.me/codewithT...
    TELEGRAM Group LINK: t.me/joinchat/...
    =======================================================================
    USEFUL LINKS:
    🟠Must do TIPS to ACE Virtual Interview: • 🔴Must do Tips to ACE y...
    🟢Best strategy to excel your coding interview: • 🔴Best strategy to exce...
    🟡Get your dream job in 1 month: • 🔴Get your dream job in...
    🔵How to crack dream job in just 2 months: • How to crack dream job...
    🟣7 Days DSA plan: techdose.co.in...
    RELATED LINKS:
    Permutation Sequence: • Permutation Sequence |...
    String permutation algorithm: • String permutation alg...
    Permutation in a string: • Permutation in String ...
    CODE LINK: techdose.co.in...

Komentáře • 146

  • @life_of_anjali
    @life_of_anjali Před 3 lety +78

    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 Před 3 lety +44

    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 Před 3 lety +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!

  • @vcfirefox
    @vcfirefox Před 2 lety +5

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

  • @srikantd6054
    @srikantd6054 Před 3 lety +14

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

  • @johncenakiwi
    @johncenakiwi Před 2 lety +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.

  • @gouthamr8214
    @gouthamr8214 Před 2 lety +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.

  • @pratosh
    @pratosh Před 2 lety +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]

  • @shobhanksharma65
    @shobhanksharma65 Před 3 lety +1

    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

  • @chiragsahu5468
    @chiragsahu5468 Před 2 lety +6

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

  • @abhijit-sarkar
    @abhijit-sarkar Před 10 měsíci +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.

  • @manojs157
    @manojs157 Před 2 lety +2

    Great explanation thank you

  • @madhavanr8996
    @madhavanr8996 Před 3 lety +2

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

  • @payalshekhawat7563
    @payalshekhawat7563 Před 3 lety +7

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

  • @art4eigen93
    @art4eigen93 Před 2 lety +1

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

  • @tanishhhhhhh
    @tanishhhhhhh Před 2 lety +1

    great explaination of the question

  • @minatokuns1810
    @minatokuns1810 Před 2 lety +1

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

  • @paragroy5359
    @paragroy5359 Před 3 lety +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..

  • @parthokr
    @parthokr Před 3 lety +2

    That graph representation just blew my mind.

  • @afridimajeed5897
    @afridimajeed5897 Před 3 lety +4

    I no longer dread this problem, great explanation!

  • @aditisinghh
    @aditisinghh Před 3 lety +5

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

  • @rushikeshkulkarni1784
    @rushikeshkulkarni1784 Před 2 lety +1

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

  • @stoicbro1635
    @stoicbro1635 Před 2 lety +1

    beautiful explanation

  • @abhishekjadoun7562
    @abhishekjadoun7562 Před 3 lety +3

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

  • @krentwhite2668
    @krentwhite2668 Před 2 lety +9

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

  • @Karanyadav-cd4sq
    @Karanyadav-cd4sq Před 3 lety +2

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

  • @jlecampana
    @jlecampana Před 2 lety +2

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

  • @satheeshshanmugam5940
    @satheeshshanmugam5940 Před 3 lety +1

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

  • @outsider9633
    @outsider9633 Před 3 lety +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

  • @brijvaghani6212
    @brijvaghani6212 Před 2 lety +1

    Very well explained 🤜

  • @tridoan7383
    @tridoan7383 Před 3 lety +1

    Great explanation

  • @TheSridharraj
    @TheSridharraj Před 3 lety +1

    Best explanation i have ever seen

  • @dikshantboora3764
    @dikshantboora3764 Před 2 lety +1

    very much better than striver

  • @mohdfarhanahmed9416
    @mohdfarhanahmed9416 Před 3 lety +3

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

  • @harpercfc_
    @harpercfc_ Před 2 lety +1

    Very useful one. Thank you sir

  • @Ajeet-Yadav-IIITD
    @Ajeet-Yadav-IIITD Před 3 lety +6

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

  • @SHUBHAMYADAV-bs8vl
    @SHUBHAMYADAV-bs8vl Před 3 lety +3

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

  • @alltechsimplified2134
    @alltechsimplified2134 Před rokem +1

    i was able to come up with the 70% approach

  • @FOODASMRFAMILY
    @FOODASMRFAMILY Před 2 lety +1

    amazing explanation with diagram approach

  • @ninhbinhhuynh7619
    @ninhbinhhuynh7619 Před 2 lety +2

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

  • @LalitPandeyontube
    @LalitPandeyontube Před 2 lety +1

    such a great explanation

  • @rajatgoyal8155
    @rajatgoyal8155 Před 3 lety +3

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

  • @dhanashreegodase4445
    @dhanashreegodase4445 Před 3 lety +1

    you deserve more likes yar... great video

  • @radhasingh3549
    @radhasingh3549 Před 2 lety +2

    Amazing explanation😍

  • @selvaprasanths2202
    @selvaprasanths2202 Před 3 lety +2

    The best of all 🎉🔥please keep onposting

  • @shriyasonam2716
    @shriyasonam2716 Před 2 lety +1

    beautifully explained!!!

  • @waliullahsiam7999
    @waliullahsiam7999 Před 2 lety +1

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

  • @beaglesnlove580
    @beaglesnlove580 Před 2 lety +1

    This was amazing description thank you

  • @kasturisanyal6649
    @kasturisanyal6649 Před 3 lety +5

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

  • @user-oy4kf5wr8l
    @user-oy4kf5wr8l Před 4 měsíci

    Thanks, i like ur videos the most among all.

  • @hridamchakraborty6818
    @hridamchakraborty6818 Před 3 lety +2

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

  • @satyanarayanagokavarapu3011

    Can you explain Integer to English words leetcode 273 problem ?

    • @techdose4u
      @techdose4u  Před 3 lety +1

      Sure. It's very important for FAANG :)

    • @satyanarayanagokavarapu3011
      @satyanarayanagokavarapu3011 Před 3 lety +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  Před 3 lety

      Sure

  • @praharshsingh2095
    @praharshsingh2095 Před 3 lety +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) ?

  • @handlerhandle123
    @handlerhandle123 Před 2 lety +2

    Graph helped thank you

  • @amitmohapatra292
    @amitmohapatra292 Před 2 lety +1

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

  • @sujalhansda8285
    @sujalhansda8285 Před 3 lety +1

    Brilliant !

  • @gokulnaathbaskar9808
    @gokulnaathbaskar9808 Před rokem +1

    Thank you, Sir, this was nice

  • @gauravraj2604
    @gauravraj2604 Před 3 lety +1

    Great explanation. Thanks a lot

  • @gautam4696
    @gautam4696 Před 3 lety +2

    Bhai you are the best

  • @shubhamchavan1387
    @shubhamchavan1387 Před 3 lety +2

    Thank you!

  • @thinkverse94
    @thinkverse94 Před 3 lety +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.

  • @mahipalsingh-yo4jt
    @mahipalsingh-yo4jt Před 3 lety +2

    This channel saves me everytime:)

  • @kaushikramabhotla4635
    @kaushikramabhotla4635 Před 2 lety +2

    Maja aagya sir 🙌

  • @formulaire.8379
    @formulaire.8379 Před měsícem

    why we dont just use next_permutation ?

  • @codingnightmares3407
    @codingnightmares3407 Před 3 lety +2

    Thanks a lot!
    Best explanation 🧡

  • @shivamagrawal3542
    @shivamagrawal3542 Před 3 lety +1

    What is the time complexity here?

  • @ishwaripednekar5164
    @ishwaripednekar5164 Před 3 lety +2

    Really appreciated ❤️

  • @subscribeinsteadlike2768
    @subscribeinsteadlike2768 Před 2 lety +2

    Freakinnnn Awesommmeee

  • @ganavin3423
    @ganavin3423 Před 2 lety

    Thanks .it helped me understood

  • @sekharsamanta6266
    @sekharsamanta6266 Před rokem

    Wow! such a clear explanation...thank you

  • @MrChetan54
    @MrChetan54 Před 2 lety

    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

  • @maksymmoroz
    @maksymmoroz Před 7 měsíci

    Thank you man, you helped me! Very clear

  • @themountains1701
    @themountains1701 Před 2 lety +1

    It's not working.

  • @anubhavsethi7728
    @anubhavsethi7728 Před 3 lety +2

    Well explained 👌🏻👌🏻💯💯

  • @ullasbc728
    @ullasbc728 Před rokem

    Good Explanation! Thank You

  • @chiragPatel22c
    @chiragPatel22c Před rokem +1

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

  • @ghanishsingla8270
    @ghanishsingla8270 Před 5 měsíci

    Code link doesn't work, getting 404.

  • @karmakaraayon4238
    @karmakaraayon4238 Před rokem

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

  • @GeetainSaar
    @GeetainSaar Před 2 měsíci

    Better than striver

  • @Purubro
    @Purubro Před rokem

    Level ka observation h vaiya

  • @praveengautam4689
    @praveengautam4689 Před 2 lety +1

    genius...:)

  • @ShivamGupta-cx3hy
    @ShivamGupta-cx3hy Před 3 lety +1

    Awesome Teacher

  • @gokulnaathbaskar9808
    @gokulnaathbaskar9808 Před rokem

    This was beautiful, thank you

  • @samakshtandon1190
    @samakshtandon1190 Před 3 lety

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

  • @nishant5249
    @nishant5249 Před rokem

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

  • @user-jp9jd6el1f
    @user-jp9jd6el1f Před rokem

    Sir plz apni facevalue bhi banaaiye

  • @tech_wizard9315
    @tech_wizard9315 Před 3 lety +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 Před 3 lety +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 Před 3 lety

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

  • @coder1015
    @coder1015 Před 3 lety +2

    Amazing ;)

  • @andriidanylov9453
    @andriidanylov9453 Před 10 měsíci

    Appreciate

  • @qazaqempire3828
    @qazaqempire3828 Před 2 lety +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

  • @takumisugita936
    @takumisugita936 Před 2 lety +1

    medium btw

  • @rhs1078
    @rhs1078 Před 6 měsíci

    Worst explanation ever

  • @saikatpaul6576
    @saikatpaul6576 Před rokem

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

    • @manojjain3501
      @manojjain3501 Před 6 měsíci

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

  • @rangdeb
    @rangdeb Před rokem +1

    amazing explanation

  • @bhuvneshsingh3347
    @bhuvneshsingh3347 Před 2 lety +1

    Thanks!

  • @rohithalder7546
    @rohithalder7546 Před měsícem

    Great explanation

  • @azharuddinkhan1865
    @azharuddinkhan1865 Před rokem

    Great explanation