BS-26. Find Peak Element-II | Binary Search

Поделиться
HTML-код
  • Опубликовано: 12 сен 2024
  • Problem Link: bit.ly/3Ckb4Rb
    Please watch part-1: • BS-9. Find Peak Element
    Notes/C++/Java/Python codes:
    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

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

  • @iammysterious-ud9cf
    @iammysterious-ud9cf Год назад +159

    Striver..... PLEASE CONTINUE A TO Z DSA Course....From Step 5(strings) , it is incomplete(no videos for the questions)... Your videos are very useful in intuition building and finding approach... PLEASE DONT LEAVE US IN THE MIDDLE😢😢😢...I hope you respond to the requests for the guys like me..

  • @kathakalisaha9735
    @kathakalisaha9735 6 месяцев назад +19

    Those who watches your videos completely will never say you use cpp , they are the ones who dont watch the intuition part, directly jump into the code

  • @saibingi6980
    @saibingi6980 Год назад +54

    I request you to please make videos in Bit Manipulation, Heaps, Strings, and Disjoint-set in the upcoming sessions.

    • @godson200
      @godson200 Год назад +3

      He already has about 10 videos on disjoint set in the graph series. Maybe that can help.

    • @rekhabisht6709
      @rekhabisht6709 Год назад +7

      Phle itna khatm krle

    • @dumpster-jackson
      @dumpster-jackson 2 месяца назад

      @@rekhabisht6709 Ab??

  • @user-eq9zo5vj7c
    @user-eq9zo5vj7c День назад +1

    Even if you didn't provide the pseudo code and just went to implement the C++ code, I don't think it matters because it's actually your explanation of the solutions that actually helps anyone that considers him/herself a problem solver or anyone that's learning DSA. And as someone who uses/used multiple languages, I think given the explanation , any code from any programming language is pretty much understandable for someone that knows at least one programming language.

  • @cenacr007
    @cenacr007 11 месяцев назад +16

    Array and Strings are the most important for interviews, please make a playlist on strings.

  • @zerobear-xf7qh
    @zerobear-xf7qh Месяц назад +3

    nice solution i dont think i would come up with this solution on my own

  • @sundaramkumarsingh8448
    @sundaramkumarsingh8448 11 месяцев назад +6

    clear cut explanation. Thank you Striver

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

    This man is a genius!

  • @tanvirkekan6111
    @tanvirkekan6111 6 месяцев назад +1

    This is an interesting soln:
    x,y = 0, len(mat[0]) - 1
    while x < len(mat) or y >= 0:
    if x + 1 < len(mat) and mat[x + 1][y] > mat[x][y]:
    x += 1
    elif y - 1 >= 0 and mat[x][y - 1] > mat[x][y]:
    y -= 1
    else:
    break
    return [x, y]

  • @rahulgoel7652
    @rahulgoel7652 6 месяцев назад +2

    I am unsure if first method would have O(mn *4) TC. You are traversing the matrix once, i.e. O(mn). For each element, checking the neighbors is constant time, so it wont be 4 times the number of elements

    • @tusharyadav5874
      @tusharyadav5874 25 дней назад

      We will say it as O(m*n*4). So thats why he said we can we can slightly improve this by just finding the largest element in matrix . Then will be not using that 4 .

    • @rahulgoel7652
      @rahulgoel7652 24 дня назад

      @@tusharyadav5874 I am sorry but I didn't understand what you wrote.

  • @iammysterious-ud9cf
    @iammysterious-ud9cf Год назад +7

    Please Start Linked Lists

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

    sudo code is sufficient for any developer to write code in any language , understood thanks a lot !!

  • @LearnwithEase20
    @LearnwithEase20 7 месяцев назад +1

    please make videos on string and other topic it is much needed no one explains like you!🙂

  • @securelyinsaycure
    @securelyinsaycure 4 месяца назад

    Striver you are a godsend to so many of us! Thank you 🙏

  • @sidharthsharma341
    @sidharthsharma341 Год назад +4

    What are the upcoming topics?after this

  • @AshishSingh-he2qo
    @AshishSingh-he2qo Месяц назад +1

    Understood 🎉🎉

  • @stith_pragya
    @stith_pragya 6 месяцев назад +1

    Thank You Much for this wonderful video..........🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻

  • @adilkevin6220
    @adilkevin6220 5 месяцев назад +1

    ARTICLE column is empty for this problem. Please attach it.

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

    class Solution {
    public:
    int maxElement(vector& arr,int n,int m, int col){
    int index = -1;
    int maxele = INT_MIN;
    for (int i = 0; i < m; i++){
    if(arr[i][col] > maxele){
    maxele = arr[i][col];
    index = i;
    }
    }
    return index;
    }
    vector findPeakGrid(vector& mat){
    //n no of cloumns are there
    int n = mat.size();//size of each row
    //m no of rows are there
    int m = mat[0].size();//size of each column
    int low = 0, high = n - 1;
    while(low = 0)? mat[row][mid - 1] : -1;
    int right = (mid+1 < n)? mat[row][mid + 1] : -1;
    if(left < mat[row][mid] && mat[row][mid] > right){
    return {row, mid};
    }
    else if(left > mat[row][mid]){//cut out right part
    high = mid - 1;
    }
    else{//cut out the left part
    low = mid + 1;
    }
    }
    return {-1, -1};
    }
    }; can anyone find the mistake please🙏 it's showing runtime error (something overflow) for a very large input matrix

  • @jeehub041
    @jeehub041 11 месяцев назад +3

    What an approach mind blown 🙌🙌

  • @harshit.53
    @harshit.53 5 месяцев назад +1

    i don't understand why people complain about only using cpp...first of all he discusses the idea behind the code and then writes a simple pseudo code...secondly, even if he uses cpp, any good coder can easily convert that code into any other language, maybe in other languages the function name and syntax is different, so u just need to use the functions provided by ur language

  • @utkarshtrivedi9866
    @utkarshtrivedi9866 3 месяца назад

    Understood, even just looking at pseudo code, I was able to code it myself.

  • @mahimagautam1810
    @mahimagautam1810 11 месяцев назад +2

    class Solution {
    public int findMaxIndex(int[][] mat,int mid,int n) {
    int maxi = -1;
    int ind = -1;
    for (int i = 0; i < n; i++) {
    if (mat[i][mid] > maxi) {
    maxi = mat[i][mid];
    ind = i;
    }
    }
    return ind;
    }
    public int[] findPeakGrid(int[][] mat) {
    int ans[] = {-1,-1};
    int n = mat.length;
    int m = mat[0].length;
    int low =0;
    int high = m-1;
    while(low=0 ? mat[index][mid-1]:-1;
    int right = mid+1left && mat[index][mid]>right){
    return new int[]{index, mid};
    }
    else if (mat[index][mid]

  • @anonymous-ms2en
    @anonymous-ms2en 2 месяца назад

    love you striver ,clear explaination

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

    your skin glowing in whole video

  • @TheAI-Tutor
    @TheAI-Tutor Месяц назад

    But instead of traversing vertically, can't we just Traverse horizontally and find the maximum element to do STL and then check for the upper and lower element? and discard the upper half/lower half then?

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

    Bhaiya please video continue to upload Kara Karo mera ye week topic haa🙏🙏

  • @gugulothsrilakshmi8729
    @gugulothsrilakshmi8729 7 месяцев назад +1

    written article not there in description

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

    For this problem, in leetcode , it’ll fail one test case where there are multiple peaks in the same row, that one is different scenario though, in this problem it is assumed that there will be only one peak per row , because you can’t eliminate directly in case of multiple peaks.

    • @takeUforward
      @takeUforward  Год назад +9

      this works for it also, because even if it has multiple peaks, it will find ,watch the first video to understand why it works

    • @swagcoder
      @swagcoder Год назад +3

      Thanks for replying Stiver, Understood

  • @nm.tech1001
    @nm.tech1001 Месяц назад

    Understood😊

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

    Just a little doubt, when you say we can find the maximum element in the matrix and it will surely be the peak as well. What about the fact that there can be two maximums in the matrix and both lie adjacent to each other? And the question says that the element should be strictly greater than its adjacents......

  • @DeadPoolx1712
    @DeadPoolx1712 19 дней назад

    UNDERSTOOD;

  • @SurajYadav-bt9jb
    @SurajYadav-bt9jb 2 месяца назад

    I have one doubt regarding BS that it can apply on sorted ones, but here 2D Matrix is not sorted so how can we apply BS on it , please resolve my confusion

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

    bro plzz make a videos on string problems it was missed in play list bro strivers a to Z sheet plzz upload videos

  • @VarshaSingh-hi2sb
    @VarshaSingh-hi2sb 13 дней назад

    Can there be a case where the part which have omitted peak element was present there and not where we are heading towards?

    • @brp3522
      @brp3522 7 дней назад

      11:35 This is the part that answers your question

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

    Solution in C++:
    class Solution {
    public:
    int findMaxIndex(vector&mat,int col,int rows)
    {
    int maxi=INT_MIN;
    int maxIndex;
    for(int i=0;imaxi)
    {
    maxi=mat[i][col];
    maxIndex=i;
    }
    }
    return maxIndex;
    }
    vector findPeakGrid(vector& mat)
    {
    vectorans(2);
    int rows=mat.size();
    int cols=mat[0].size();
    int low=0,high=cols-1;
    while(low=0)left=mat[maxElementRowIndex][mid-1];//edge case
    int right=-1;
    if(mid+1left&&curr>right)
    {
    ans[0]=maxElementRowIndex;
    ans[1]=mid;
    return ans;
    }
    else if(curr

  • @vikassinghbisht7305
    @vikassinghbisht7305 5 месяцев назад

    striver you are just too good

  • @NazeerBashaShaik
    @NazeerBashaShaik 4 месяца назад

    Understood, thank you.

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

    bhaiya the java cpp notes's link is not given in the description. Please do share it.

  • @mithileshkumbhar7968
    @mithileshkumbhar7968 5 месяцев назад

    Striver......The link to this problem on your page is not opening to view the code and intuition.

  • @sanketatmaram
    @sanketatmaram 8 дней назад

    understood!

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

    Bhaiya linkedlist start krdo iske badh

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

    Understood :)

  • @ranjeetkumaryadav2967
    @ranjeetkumaryadav2967 7 дней назад

    bhaiya please upload article of this problem

  • @hardikpatel352
    @hardikpatel352 4 месяца назад

    understood

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

    long awaited

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

    Problem seemed so intimidating at the begining, later on was simple variation of peak.

  • @saketjaiswal9381
    @saketjaiswal9381 Год назад +3

    linked list striver bhaiya

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

    striver please upload videos on strings it is difficult to go to others videos....

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

    thanks bhaiya

  • @PrinceKumar-ef1xf
    @PrinceKumar-ef1xf 3 месяца назад +1

    vector findPeakGrid(vector& mat) {
    int startCol = 0, endCol = mat[0].size()-1;
    while(startCol = startCol+1 && mat[maxRow][midCol-1] > mat[maxRow][midCol];
    bool rightIsBig = midCol mat[maxRow][midCol];
    if(!leftIsBig && !rightIsBig) return vector{ maxRow, midCol};
    else if(rightIsBig) startCol = midCol+1;
    else endCol = midCol-1;
    }
    return vector{-1,-1};
    }

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

    awesome

  • @lakshsinghania
    @lakshsinghania 15 дней назад

    bhaiya i did convert from 2d array to 1d array but only 45/55 test cases is passing pls help
    class Solution {
    public:
    vector findPeakGrid(vector& matrix) {
    // binary search on answer
    int m = matrix.size();
    int n = matrix[0].size();
    // tc = o(log(m*n))
    int start = 0;
    // created an imaginery 1D array of size from 0 to n*m-1
    int end = (n * m) - 1;
    while (start 0) ? matrix[i - 1][j] : -1;
    int bottom = (i < m - 1) ? matrix[i + 1][j] : -1;
    int left = (j > 0) ? matrix[i][j - 1] : -1;
    int right = (j < n - 1) ? matrix[i][j + 1] : -1;
    if (mid > start && mid < n * m - 1) {
    if (matrix[i][j] > top && matrix[i][j] > bottom &&
    matrix[i][j] > left && matrix[i][j] > right) {
    return {i, j}; // Peak element found
    }
    // If left or top neighbor is greater, move to the left or top
    // half
    if (left > matrix[i][j] || top > matrix[i][j]) {
    end = mid - 1;
    }
    else {
    // Else move to the right or bottom half
    start = mid + 1;
    }
    }
    else if (mid == start) {
    // Only move right if there's no left neighbor
    if (matrix[i][j] > right && matrix[i][j] > bottom) {
    return {i, j};
    }
    else {
    start = mid + 1;
    }
    }
    else if(mid == end){
    // Only move left if there's no right neighbor
    if (matrix[i][j] > left && matrix[i][j] > top) {
    return {i, j};
    }
    else {
    end = mid - 1;
    }
    }
    }
    return {-1, -1};
    }
    };

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

    didn't really understand but will try more

  • @viveksoni3269
    @viveksoni3269 3 месяца назад

    Very Nice!!!!

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

    Bhaiya mey aapka binary tree ka playlist se tree padh rha hu but jab aap iss video mey jaise padhete hai to sab samjh aata hai but tree wala mey aisa kuch samjh nahi aa rha hai jab jab aap board pr padhye jab tak to sab samjh aaya but uske baad kuch jyada nahi aaya 😊 plz bhaiya aap iss video ki format mey videos banaya kariye plz and do something trees also

  • @hashcodez757
    @hashcodez757 7 месяцев назад

    Understood!!

  • @vishious14
    @vishious14 7 месяцев назад

    Understoood !!!!!

  • @user-or5oz1pk2x
    @user-or5oz1pk2x 4 месяца назад

    Thanks a lot Bhaiya

  • @sanjayp.m7008
    @sanjayp.m7008 2 месяца назад

    why cant i use the logic of matching the row and col to mid and considering this matrix as a 2d array. i tried this but only 46 testcases passed in the leetcode qn.
    class Solution {
    public:
    vector findPeakGrid(vector& mat) {
    int n = mat.size();
    int m = mat[0].size();
    int low = 0;
    int high = n * m - 1;
    while (low = 0) ? mat[row][col - 1] : INT_MIN;
    int bottom = (row + 1 < n) ? mat[row + 1][col] : INT_MIN;
    int top = (row - 1 >= 0) ? mat[row - 1][col] : INT_MIN;
    if (el > right && el > left && el > top && el > bottom) {
    return {row, col};
    }
    if (right > el) {
    low = mid + 1;
    }
    else if (left > el) {
    high = mid - 1;
    }
    else if (bottom > el) {
    low = mid + 1;
    } else {
    high = mid - 1;
    }
    }
    return {-1, -1};
    }
    };

  • @abhishekprasad010
    @abhishekprasad010 5 месяцев назад

    Understood

  • @user-tk2vg5jt3l
    @user-tk2vg5jt3l 7 месяцев назад

    Thank you Bhaiya

  • @VishalKumar-uk5uc
    @VishalKumar-uk5uc Год назад

    Ek month wait Kiya ek video ke liye

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

    give its article also

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

    Thanks a lot......!

  • @AbdulRehman-ee8zc
    @AbdulRehman-ee8zc Год назад

    sir khan thay aap
    aap hi k lecture ka intizar tha

  • @surbhirathore._
    @surbhirathore._ 3 месяца назад

    Done!!!

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

    linked list series plss

  • @shaiksoofi3741
    @shaiksoofi3741 3 месяца назад

    tq

  • @AkashBisht-cq3ys
    @AkashBisht-cq3ys 2 месяца назад

    1st july mon 9.13

  • @nishantsatere9350
    @nishantsatere9350 3 месяца назад

    understoddddddddd

  • @codeman3828
    @codeman3828 7 месяцев назад

    Undertsood

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

    🙇‍♀🙇‍♀🙇‍♀🙇‍♀🙇‍♀🙇‍♀

  • @infinity2creation551
    @infinity2creation551 10 месяцев назад

    You are calling col ko row ...

  • @crazybro4383
    @crazybro4383 4 месяца назад

    8:00

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

    how many videos more to come

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

    UnderStood

  • @shivamkumar-hz7jt
    @shivamkumar-hz7jt Год назад

    strings ke video upload krdo pls

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

    public class solution {
    public static int []find Peek Grid(int [][]grid){
    int n=grid. length,m=grid [0].length;
    int l=0,r=m-1;
    while (lgrid [idx][mid +1]){
    r=mid;
    }else {
    l=mid-1;
    }
    return new int []{l,find max(grid [l])};
    }
    public static int find max(int []col){
    int index =0,n=col length;
    for(int i=0;icol[index])
    index =i;
    }
    return index;
    }
    };
    🎉❤

  • @user-xr5tm4dk9v
    @user-xr5tm4dk9v 2 месяца назад

    Jeetu bhaiya equivalent

  • @RAJPATEL-ir7ly
    @RAJPATEL-ir7ly 2 месяца назад

    O(n+m) BFS
    class Solution {
    public:
    vector findPeakGrid(vector& mat) {

    int i = 0 ;
    int j = 0 ;
    int n = mat.size() ;
    int m = mat[0].size() ;
    while(true){

    int flag = 0 ;
    vector coordinates = {{1,0} , {0,1} , {-1,0} , {0,-1}} ;
    int maxi= -1 ;
    int newRow =0 ;
    int newCol = 0 ;
    for(auto coordinate : coordinates){
    int x = i+coordinate.first ;
    int y = j+coordinate.second ;
    if(x>=0 && y>=0 && x

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

    100th comment of video

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

    us

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

    first view xD

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

    Biltu kaka Zindabad

  • @AvaneeshSrivastava-lm5vj
    @AvaneeshSrivastava-lm5vj 10 месяцев назад

    understood. thank you. you should sleep a bit more.

  • @ishangujarathi10
    @ishangujarathi10 11 месяцев назад +1

    why am i getting a runtime error when i submit the solution on leetcode? @striver??

    • @ajithc5505
      @ajithc5505 10 месяцев назад +1

      int left = mid-1>=0 ? mat[index][mid-1]:-1;
      int right = mid+1

    • @tejaswaniguttula5961
      @tejaswaniguttula5961 4 месяца назад

      @@ajithc5505
      Hi
      vector findPeakGrid(vector &g){
      // Write your code here.
      int rows = g.size();
      int cols = g[0].size();
      int low = 0, high = cols-1;
      while(low max_ele){
      max_ele = g[i][mid];
      index = i;
      }
      }
      int left = mid-1 >= 0 ? g[index][mid-1] : -1;
      int right = mid +1 < cols ? g[index][mid+1] : -1;
      if(max_ele > left && max_ele > right){
      return {index, mid};
      }
      else if(max_ele < g[index][mid-1]){
      high = mid-1;
      }
      else{
      low = mid+1;
      }
      }
      return {-1, -1};
      }
      };
      Though I applied edge cases why I am getting runtime error for this testcase??
      Test case:
      [[10,50,40,30,20],[1,500,2,3,4]]

    • @user-fu4lb7fw1t
      @user-fu4lb7fw1t 2 месяца назад

      @@ajithc5505 thanks brother it works now

  • @NazeerBashaShaik
    @NazeerBashaShaik 4 месяца назад

    Understood, thank you.

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

    Understood brother

  • @RishabhKumar0094
    @RishabhKumar0094 21 день назад

    understood

  • @dewanandkumar8589
    @dewanandkumar8589 4 месяца назад

    Understood

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

    understood

  • @_sf_editz1870
    @_sf_editz1870 10 месяцев назад

    Understood

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

    Understood

  • @ashishpradhan6250
    @ashishpradhan6250 3 месяца назад

    understood

  • @culeforever5408
    @culeforever5408 10 месяцев назад

    understood

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

    understood