BS-9. Find Peak Element

Поділитися
Вставка
  • Опубліковано 27 вер 2024
  • Problem Link: bit.ly/3BEDvZC
    Notes/C++/Java/Python codes: takeuforward.o...
    We have solved the problem, and we have gone from brute force and ended with the most optimal solution. Every approach's code has been written in the video itself. Also, we have covered the algorithm with intuition.
    Full Course: bit.ly/tufA2ZYt
    You can follow me across social media, all my handles are below:
    Linkedin/Instagram/Telegram: linktr.ee/take...
    0:00 Introduction of Course

КОМЕНТАРІ • 384

  • @takeUforward
    @takeUforward  Рік тому +197

    Sorry for the delay :( But I had a product launch, for which I had to spend most of my time in the office. I am back, will try to come with 1/2 videos daily now

    • @charan123rams3
      @charan123rams3 Рік тому +8

      Thank you so much sir 🙏
      Sir first take rest whenever you have free time then post sir 🥲

    • @shivanshumishra0560
      @shivanshumishra0560 Рік тому +7

      Thankyou so much bhaiya for all videos ...🙏🙏❤️❤️
      Your content is >>>> whole UA-cam

    • @sudhanshushekhar4222
      @sudhanshushekhar4222 Рік тому +4

      Understood

  • @sayakghosh5104
    @sayakghosh5104 Рік тому +99

    Was trying this for the past 2 days, couldn't solve it. Took 1 day break came back at it again with a fresh mind, could solve it in one go by myself. Thanks, your series instills such confidence in me always.

    • @OrderEmperor
      @OrderEmperor 4 місяці тому +7

      no one asked

    • @sayakghosh5104
      @sayakghosh5104 4 місяці тому +3

      @@OrderEmperor 😂 ok bro.

    • @paraskashyap7362
      @paraskashyap7362 3 місяці тому +10

      @@OrderEmperor no one asked nested(no one asked if no one asked or not)

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

      @@arunm619 fair enough

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

      @@paraskashyap7362 calling in return statement (recursion)no one asked if no one asked or not that no one asked :----) *without breaking condition

  • @shivanshugarg807
    @shivanshugarg807 3 місяці тому +10

    Thanks striver I completed all your sheets , like twice , they boost my confidence , before watching your solution , i try every question for 30 mins , and regardless i am able to solve it or not , i watch your video for better understanding and side by side mark improtance of question and make notes for revision

    • @Kaif_Ali_Khan
      @Kaif_Ali_Khan Місяць тому

      ok

    • @3lpme
      @3lpme Місяць тому

      Then plz explain why should we consider binary search even though it's not

  • @ishanshah3309
    @ishanshah3309 Рік тому +17

    the best about this video was the thinking process of how to arrive from linear to binary search in problems like this. execellent stuff.

  • @yashgarg3899
    @yashgarg3899 Рік тому +18

    i have solved these questions already so before but still i watch every video of you because i know there will be something different which ultimately enhance my code writing or intuition skills.

  • @ritvikryadav9667
    @ritvikryadav9667 Рік тому +6

    Hey Striver, Your videos are pure gem. Certainly the best DSA course on the planet. Keep going. God Bless You!

  • @GalaxyStart62
    @GalaxyStart62 6 місяців тому +1

    it's a blessing that you are in youtube,
    but on the other side , people are enjoying DSA now, hence , competition is drastically increasing too.

  • @tanaywhocodes
    @tanaywhocodes 14 днів тому

    Thank you ! wrote the same code without watching the video. All because of you.

  • @oguluribrahmaiah1301
    @oguluribrahmaiah1301 8 місяців тому +1

    Commenting Understood is just a simple thing for your wonderful explanation !!!
    Thank you So much for your lectures Striver

  • @rrt19254
    @rrt19254 9 днів тому

    Woah, solved this at once! Think I'm learning this concept!

  • @RaunitJaiswal-s9v
    @RaunitJaiswal-s9v 13 днів тому

    for those who are facing problem with the if else part for the right side here is the easy way to think If the element to the right of mid is greater (arr[mid] < arr[mid + 1]), we move to the right half (since there must be a peak in that direction).

  • @DeepikaKondamadugu
    @DeepikaKondamadugu 4 місяці тому +1

    Didn't even look for completion time of the video!!!.....So that much interesting your videos are❤

  • @Harsh-x5o9f
    @Harsh-x5o9f 3 місяці тому

    The man who is making every CSE student's career bright

  • @RaunitJaiswal-s9v
    @RaunitJaiswal-s9v 13 днів тому

    done with easy part of binary search from monday will start with medium part
    lots of love raj bhaiya

  • @Dreamer4lyf
    @Dreamer4lyf 3 місяці тому

    Amazing explanation Striver my man! Hats off to you for all your hard work for the community.

  • @ParkersFact_Finder
    @ParkersFact_Finder 23 дні тому

    how you think like that striver i mean your thought process is totally diff how can i achieve this type of thought process honestly Best DSA playlist

  • @pizzagamingyt9712
    @pizzagamingyt9712 Рік тому +2

    Bro u are the most helpful person for all engineering cse student 🧡❤

  • @viveksinghrajput2725
    @viveksinghrajput2725 Рік тому +1

    Best explanation on the UA-cam thank you soo much....each and every second of this video is informative.

  • @theengineer8301
    @theengineer8301 5 місяців тому

    Hi Striver, this was an epic explanation. Hats off!
    However I think we can only check the left element of mid. If greater then eliminate right. Else eliminate left. No need for the other if condition.
    class Solution {
    public:
    int findPeakElement(vector& arr) {
    int n = arr.size();
    if(n == 1) return 0;
    if(arr[0] > arr[1]) return 0;
    if(arr[n-1] > arr[n-2]) return n-1;
    int low = 1;
    int high = n - 2;
    int mid;
    while(low arr[mid+1] )
    return mid;
    //mid-1 greater than mid, peak on left,eliminate right
    if(arr[mid-1] > arr[mid])
    high = mid - 1;
    //peak on right, eliminate left
    else
    low = mid + 1;
    }
    return mid;
    }
    };

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

      he explained it by the end. it may lead to an infinite loop if there are multiple peaks.

  • @graviton001
    @graviton001 Місяць тому

    Was able to do it myself 😮 thnx for building up my logical thinking ❤

  • @madhulikaghosh3876
    @madhulikaghosh3876 5 місяців тому

    Your explanation is crazy. You are really doing a very good job.

  • @Dipanshutripathi2407
    @Dipanshutripathi2407 Рік тому +1

    Filled with full confidence after watching ur videos.

  • @PiyushKumar-xe1ng
    @PiyushKumar-xe1ng 2 місяці тому +1

    int start = 0;
    int end = n - 1;
    while (start < end) {
    int mid = start + (end - start) / 2;
    if (arr[mid] < arr[mid + 1]) {
    start = mid + 1;
    }
    else {
    end = mid;
    }
    }
    return start; (how about this ,easy and covers every edge case)

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

    This was pretty easy, finally solved it on my own.

  • @deepanshudahiya8966
    @deepanshudahiya8966 3 місяці тому

    An amazing question learning new patterns of conditions in binary search

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

    Nice explanation on that hidden test case

  • @saambpatil9912
    @saambpatil9912 Рік тому +5

    iNSTEAD OF ADDING THE LAST CONDITION WE CAN CHANGE THE ABOE CONDITIONS TO :
    else if (nums[mid] < nums[mid + 1])
    {
    low = mid + 1;
    }
    else if (nums[mid] < nums[mid - 1])
    {
    high = mid - 1;
    }
    COMPLETE CODE:
    class Solution
    {
    public:
    int findPeakElement(vector &nums)
    {
    int n = nums.size();
    if (n == 1)
    {
    return 0;
    }
    if (nums[0] > nums[1])
    {
    return 0;
    }
    if (nums[n - 1] > nums[n - 2])
    {
    return n - 1;
    }
    int low = 1;
    int high = n - 2;
    while (high >= low)
    {
    int mid = low + (high - low) / 2;
    if (nums[mid] > nums[mid + 1] && nums[mid] > nums[mid - 1])
    {
    return mid;
    }
    else if (nums[mid] < nums[mid + 1])
    {
    low = mid + 1;
    }
    else if (nums[mid] < nums[mid - 1])
    {
    high = mid - 1;
    }
    }
    return 0;
    }
    };

  • @ashishrajoria2251
    @ashishrajoria2251 19 днів тому

    public int findPeakElement(int[] nums) {
    int left = 0, right = nums.length - 1;
    while (left < right) {
    int mid = left + (right - left) / 2;
    if (nums[mid] > nums[mid + 1]) {
    right = mid;
    } else {
    left = mid + 1;
    }
    }
    return left;
    }

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

    THe last one infinite loop example was very helpful to understand the problems condition clearly.

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

    Bhaiya I solved this without seeing the video. Because i have learnt the concepts from your earlier videos. Thanks and LOTS of LOVE.

  • @shailesh_rajpurohit
    @shailesh_rajpurohit Рік тому +2

    3:20 here 3 is also peak

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

    at the end of video i am just surprised.......understood very clearly.....thankssss a lottttt striver......

  • @Raj10185
    @Raj10185 Рік тому +2

    code for the same :-
    int findPeakElement(vector& arr) {

    int n = arr.size();

    //checking done for initial cases where finding and is very easy

    if(n==1) //edgecase1
    return 0;

    if(arr[0] > arr[1]) //edgecase 2
    return 0;

    if(arr[n-1] > arr[n-2]) //edgecase 3
    return n-1;



    // now apply bS on remaining part

    int l = 1;
    int r = n-2;






    while(larr[mid+1] && arr[mid]>arr[mid-1])
    {
    return mid ;
    }

    else if (arr[mid]>arr[mid-1]) //mid on the increasing path that means our ans will be in right side
    l = mid+1;
    else // mid is on the decreasing path peak will be on left side
    r = mid -1;

    }






    return -1;




    }

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

      not working for all testcases in coding ninjas

  • @kenkaneki669
    @kenkaneki669 Рік тому +2

    Damn, was eagerly waiting for this!!!

  • @hashcodez757
    @hashcodez757 8 місяців тому

    Understood very well sir!!
    No words for your appeciation bhaiya

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

    Tysm first time i got clear cut intution of finding the peak element :) tysm again UNDERSTOOD EVERYTHING:)

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

    while(low < high-1){
    mid = (low+high)/2;
    if(arr[mid]>arr[mid+1] && arr[mid]>arr[mid-1]) return arr[mid];
    if(arr[mid+1]>arr[mid]) low = mid+1;
    else high = mid-1;
    }
    if(arr[low]>arr[high]) return arr[low];
    else return arr[high];
    initially came up with this solution, it was working and was accepted in leetcode

  • @harshitsingh3510
    @harshitsingh3510 6 місяців тому +5

    can we simply find the largest and return that index , it will also give the peak😜

    • @mohitt_amv
      @mohitt_amv Місяць тому +1

      it will take o(n) if im not wrong!?

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

    absolute beauty of a question

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

    great content no one teach like this atleast for free

  • @RajNamdev_19
    @RajNamdev_19 2 місяці тому +1

    Understood.

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

    Understood,thanks striver for this amazing video.

  • @anujrathore5726
    @anujrathore5726 7 місяців тому +13

    NO ONE CAN TEACH LIKE STRIVER, HE GIVES HIS 100% to his lectures. he want to teach , he compleltly go into the state of teaching , like with full FOCUS & DEDICATION . he enjoy to teach .
    and all of this FREE OF COST , LEGEND AKA RAJ VIKRAMDITYA BHAIYA (STRIVER BHAI OP )

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

    welcome back, waited for you every single day

  • @cinime
    @cinime Рік тому +2

    Understood! Super awesome explanation as always, thank you very much for your effort, and congrats for your product launch!! Is this idea used to find the derivative local maximum / minimum?

  • @siddunihary
    @siddunihary 3 місяці тому

    Strivers Sir You Are The Best

  • @charan123rams3
    @charan123rams3 Рік тому +3

    Sir please complete as soon as possible please sir 🙏🙏😢

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

    Thank You Striver..Understood everything🙂

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

    wow, the reversal peak, beautiful

  • @Mousam_Sharma
    @Mousam_Sharma 9 місяців тому

    Understood .best Explanation 👍

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

    Amazing explanation! thanks teacher :)

  • @boomerofficial7177
    @boomerofficial7177 8 місяців тому

    Kya question samjhaya hai bhai 👍👍👍

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

    Firstly the brute force psudeo code will only for:
    1) array which has one peak element.
    2) array is in ascending order
    3) array is in descending order.

  • @Vivek-t9o8g
    @Vivek-t9o8g 3 місяці тому

    Excellent explanation

  • @Codro09
    @Codro09 5 місяців тому

    This is the brute linear solution :
    class Solution {
    public:
    int findPeakElement(vector& nums) {
    //Brute force:
    int n = nums.size();
    int ans = INT_MIN;
    int peak_index = -1;
    if(n==1) return 0;
    for(int i = 0; i < n; i++){
    if (nums[i] > ans) {
    ans = nums[i];
    peak_index = i;
    }
    }
    return peak_index;
    }
    };

  • @saswatrath4646
    @saswatrath4646 5 місяців тому

    at 21:15 correction* if(arr[o] > arr[1]) return 0; the first index is the peak

  • @riteshbisht94
    @riteshbisht94 8 місяців тому +1

    God level content 🥵 🔥🔥

  • @culeforever5408
    @culeforever5408 11 місяців тому +1

    understood 😇

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

    if we give last condition (else high = mid -1;) that will work for both 1 peak element and also multi peak element.

  • @sameekshamurdia5-yeariddph649
    @sameekshamurdia5-yeariddph649 Рік тому +1

    Understood

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

    Reversal of a peak is called trough. 30:29

  • @hariomtiwari7605
    @hariomtiwari7605 11 місяців тому +1

    UNDERSTOOD 👌👌👌👌👏👏👏👏

  • @maccode07
    @maccode07 12 днів тому

    THANK U STRIVER

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

    UNDERSTOOD

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

    Understood Bhaiya

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

    Fantastic teaching...!

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

    Understood boss!!

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

    far better than other vedio

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

    NICE SUPER EXCELLENT MOTIVATED

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

    Very well explained. Understood

  • @sukritinarang5016
    @sukritinarang5016 8 місяців тому

    Great Playlist . 👍

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

    DSA me bhaiyaa aap BAAP ho , ye sayad appko khud nahi pata , Love u bhaiya

  • @kallabhargavi-d7j
    @kallabhargavi-d7j 5 місяців тому

    understood striver

  • @Learnprogramming-q7f
    @Learnprogramming-q7f 7 місяців тому

    Thank you Bhaiya

  • @sanketatmaram
    @sanketatmaram 27 днів тому

    Understood!

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

    Loved it

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

    Mind blowing video..

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

    understood, you are BEST !

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

    luv the way u teach

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

    shukriya habibi ..

  • @AnmolGupta-oj4lm
    @AnmolGupta-oj4lm Рік тому

    Understood Very Well!

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

    thank you

  • @mehrabhossain8225
    @mehrabhossain8225 8 місяців тому

    you are really great one ..

  • @ShivamYadav-in2jg
    @ShivamYadav-in2jg Рік тому +2

    Hey Striver , the above method did not worked for this array : {1,1,51,2,3,4,5,6,7,7} , it gave "No Peak".

    • @riteshkumargupta4386
      @riteshkumargupta4386 Рік тому +3

      you cannot have same value at 2 consecutive indexs, therefore this is not a valid input

    • @naga_stark
      @naga_stark 8 місяців тому

      if(arr[mid]>=arr[mid+1] && arr[mid]>=arr[mid-1]) return mid; // just add a equal operator to handle plateau case

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

      nums[i] != nums[i + 1] for all valid i as mentioned in problem. but (1,51,2,3,4,5,6,7) 51,7 is peak so it will ignore 51 and pick 7 as peak

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

    Understood

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

    Thank you striver 😇🙌

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

    But what if question is [1,2,1,3,5,6,4] , it will eliminate left half and go to right where peak is not there

  • @LokeshKumar-lv3zq
    @LokeshKumar-lv3zq 2 місяці тому

    Compiling your Code...
    > Success!
    Running Test Cases...
    > TestCase - Easy Failed
    Wrong Answer
    Your program's output doesn't match the expected output. You can try testing your code with custom input and try putting debug statements in your code.
    Your submission failed for the following input
    Arg 1: An Integer Array, For e.g [1,2,3]
    [1,1000000000,1000000000]
    Test As Custom Input
    The expected return value:
    1000000000
    Your function returned the following:
    -1
    Final Verdict
    > Wrong Answer
    Failing for input - [1,1000000000,1000000000] can someone help me Identify the error(Note: the code is same as mentioned in this video)

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

    Lovely striver.

  • @madhulikaghosh3876
    @madhulikaghosh3876 5 місяців тому

    I don't think people can explain like this.

  • @venkateshyadav8123
    @venkateshyadav8123 11 днів тому

    understood

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

    Understood . Thanks a lot.

  • @soumiyamuthuraj3516
    @soumiyamuthuraj3516 3 місяці тому

    awesome

  • @anshujaiswal5622
    @anshujaiswal5622 5 місяців тому

    Understood Striver :)

  • @swarajpatil-pl2xu
    @swarajpatil-pl2xu 2 місяці тому

    we can see sleep in his eyes, but still he is doing.
    crazy😴

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

    Understood !!!!!!!!!!!!!!!!!!!!!

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

    3:42 at last there are 2 peak elements
    5 and 3

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

    Understood perfectly!!!!

  • @codewithabhi1089
    @codewithabhi1089 3 місяці тому

    Hii Striver , I think if it chooses else part then it will go towards either left part or right one but in the end we will end up having one element as the peak one. Don't understand on that part. Can you please explain this??

  • @shubhangisrivastava505
    @shubhangisrivastava505 5 місяців тому

    BEST!