L5. Next Greater Element | Stack and Queue Playlist

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ม.ค. 2025

ความคิดเห็น • 64

  • @himanshu788
    @himanshu788 หลายเดือนก่อน +14

    KeyPoint: Use the example of light Pole to visualize the solution

  • @akhilesh_ku
    @akhilesh_ku 6 หลายเดือนก่อน +33

    For leetcode's 496 it has two arrays , first just make nge for nums2 then take map and maps indexes of nums1 in nums2 then find it's value from nge
    vector nextGreaterElement(vector& nums1, vector& nums2) {
    int n = nums1.size();
    int m = nums2.size();
    vector nexti(m,-1);
    vector ans;
    unordered_map mp;
    stack st;
    st.push(-1);
    for(int i=m - 1;i>=0;i--){
    while(!st.empty() && st.top()

    • @DhananjayKumar-bd2jg
      @DhananjayKumar-bd2jg 5 หลายเดือนก่อน +5

      No need to create extra vector to store the index, just put in the map where key is array element and value is next greater element.

    • @SibiRanganathL
      @SibiRanganathL 5 หลายเดือนก่อน

      Useful

  • @chitranshverma1822
    @chitranshverma1822 6 หลายเดือนก่อน +20

    in brute force approach you didnt noted anything about -1 in answer....the case when there is nothing larger that the current one in nums

    • @personadevwithhitsat7277
      @personadevwithhitsat7277 6 หลายเดือนก่อน +25

      Assign the whole array with -1

    • @xperthighlight
      @xperthighlight 3 หลายเดือนก่อน +1

      after the loop you can add assign in to -1 ;
      if loops doesn't break than it will get assigned -1

    • @shashankshukla7989
      @shashankshukla7989 3 หลายเดือนก่อน +1

      JAVA BRUTEFORCE
      class Solution {
      public int nextGreater(int[] arr, int num) {
      int n = arr.length;
      for(int i=0; i

  • @DhananjayKumar-bd2jg
    @DhananjayKumar-bd2jg 5 หลายเดือนก่อน +9

    Solution for the leetcode :)
    vector nextGreaterElement(vector& nums1, vector& arr) {
    stack st;
    unordered_map m;
    int n = arr.size();
    for(int i = n-1; i >= 0; i--){
    while(!st.empty() && st.top() < arr[i]) st.pop();
    if(st.empty()) m[arr[i]] = -1;
    else m[arr[i]] = st.top();
    st.push(arr[i]);
    }
    vector ans;
    for(int i = 0; i < nums1.size(); i++){
    ans.push_back(m[nums1[i]]);
    }
    return ans;
    }

  • @amitpathak475
    @amitpathak475 หลายเดือนก่อน +1

    explaination worth the time.

  • @vishnu9134
    @vishnu9134 28 วันที่ผ่านมา

    what an explanation !!😍😍😍

  • @iamnoob7593
    @iamnoob7593 หลายเดือนก่อน

    Wow brilliant , Thank you striver

  • @anishaa3298
    @anishaa3298 2 หลายเดือนก่อน +1

    UNDERSTOOD!!!!!!!!!

  • @harshuke5831
    @harshuke5831 2 หลายเดือนก่อน +1

    Understood ❤

  • @parth2439
    @parth2439 2 หลายเดือนก่อน +1

    understood, Thank you

  • @yoddha621
    @yoddha621 3 หลายเดือนก่อน +2

    Such easy solution, can't come up with this.

  • @chitranshverma1822
    @chitranshverma1822 6 หลายเดือนก่อน +4

    the leetcode question includes circular array ..bhaiya how to deal with it??

    • @anm9992
      @anm9992 6 หลายเดือนก่อน

      In reverse order first store all elements in stack then use ngr

  • @khushisharma-tp7ff
    @khushisharma-tp7ff หลายเดือนก่อน

    thank u great explanation

  • @kingkohli7175
    @kingkohli7175 5 หลายเดือนก่อน

    amazing💯

  • @foodiepanda6281
    @foodiepanda6281 2 หลายเดือนก่อน

    Thanks for the video

  • @jatinsaini2914
    @jatinsaini2914 3 หลายเดือนก่อน

    brother kya phadate ho app bhaut hi sahi..👌

    • @krishnaagrawal5335
      @krishnaagrawal5335 หลายเดือนก่อน

      HELLO BROTHER AAP YAHAN BHI?

    • @jatinsaini2914
      @jatinsaini2914 หลายเดือนก่อน

      @@krishnaagrawal5335 Or Kaha ?

  • @dineshlalam15
    @dineshlalam15 วันที่ผ่านมา

    I didn't understand the O(2N) logic. Someone please explain

  • @closer9689
    @closer9689 5 หลายเดือนก่อน +2

    CODE =>
    class Solution {
    public:
    //Better Approach :- T.C => O(n+m), S.C => O(n)
    vector nextGreaterElement(vector& nums1, vector& nums2) {

    int m = nums1.size();
    int n = nums2.size();
    unordered_map mp;
    /*for(int i = 0 ; i < m ; ++i) //No need to store nums1 element , in map, WHY? beacause , no need to check for element of nums2 , whether it is in nums1 or not
    {
    mp[nums1[i]] = -1;
    }
    */

    stack st;
    for(int i = n-1 ; i >= 0 ; --i ) //traversing the nums2 backwards
    {
    int curr = nums2[i];

    while( !st.empty() && st.top() < curr )
    {
    st.pop();
    }


    //If Not empty//top is ans//If empty//-1 is ans
    mp[curr] = !st.empty() ? st.top() : -1; //first check if stack is empty or not

    st.push(curr);

    }
    vector result;
    for(int i = 0 ; i < m ; ++i)
    {
    result.push_back(mp[nums1[i]]);
    }
    return result;
    }
    };

  • @impatientgaming9868
    @impatientgaming9868 27 วันที่ผ่านมา

    v good explanation

  • @mathsworldbysuraj6278
    @mathsworldbysuraj6278 หลายเดือนก่อน +1

    BRUTE FORCE
    vector arr;
    int n1=nums1.size();
    int n2=nums2.size();
    for(int i=0;i

  • @anuranpradhan
    @anuranpradhan 5 หลายเดือนก่อน +2

    song name in the last?

    • @payal_singh18
      @payal_singh18 หลายเดือนก่อน +2

      inspiration, by unknown brain

  • @hfactor1932
    @hfactor1932 19 วันที่ผ่านมา

    Awsm

  • @Abhi_9478
    @Abhi_9478 5 หลายเดือนก่อน

    mind blowing

  • @NiteshMaurya1111
    @NiteshMaurya1111 5 หลายเดือนก่อน

    thanks bhaiya

  • @KartikeyTT
    @KartikeyTT 6 หลายเดือนก่อน

    tysm sir

  • @shivisingh9975
    @shivisingh9975 5 หลายเดือนก่อน

    Understood!

  • @SibiRanganathL
    @SibiRanganathL 5 หลายเดือนก่อน +1

    Understood

  • @sauravfarkade1928
    @sauravfarkade1928 6 หลายเดือนก่อน

    Understood!!

  • @kaustubhgaikwad2562
    @kaustubhgaikwad2562 6 หลายเดือนก่อน

    If I have 1 then next greater to it will be 2 not 3 tests cases are failing

  • @ashishlesnar9577
    @ashishlesnar9577 3 หลายเดือนก่อน +2

    for java solution
    public int[] nextGreaterElement(int[] nums1, int[] nums2) {
    Map map = new HashMap();
    Stack stack = new Stack();
    int n = nums1.length;
    int[] ans = new int[n];
    for (int num : nums2) {
    while (!stack.isEmpty() && stack.peek() < num)
    map.put(stack.pop(), num);
    stack.push(num);
    }
    for (int i = 0; i < nums1.length; i++) {
    ans[i] = map.getOrDefault(nums1[i], -1);
    }
    return ans;
    }

  • @DeadPoolx1712
    @DeadPoolx1712 3 หลายเดือนก่อน

    UNDERSTOOD;

  • @AftabNaik
    @AftabNaik 3 หลายเดือนก่อน +1

    This can also be implemented in linear time without using a stack
    Instead of maintaining a stack, we can say nge(i) = i+1 by default
    and then let's check if it's actually the case
    If yes then well n good
    Else we can say that nge(i) = nge(i+1) again check if its true or not, if its not then we will just check for nge(nge(i+1))
    This will keep the range amortized and hence the time complexity will be O(n)
    Iterative implementation would be
    nge[i] = i+1;
    while(nge[i]>=nge[i+1]) {
    if(nge[i]==n)break;
    nge(i) = nge[nge[i]];
    }

    • @payal_singh18
      @payal_singh18 หลายเดือนก่อน

      two pointer approach

  • @akashdevmore4447
    @akashdevmore4447 2 หลายเดือนก่อน

    can any one explain tc of optimal soln is O(2n) not O(n^2)?

    • @noface-qs5yi
      @noface-qs5yi หลายเดือนก่อน

      Do you encounter each element twice at max O(2*n) or you take each element almost n times O(n*n)

  • @SarojVerma-z7q
    @SarojVerma-z7q 3 หลายเดือนก่อน

    LeetCode's 496. Next Greater Element I
    class Solution {
    public:
    vector nextGreaterElement(vector& nums1, vector& nums2) {
    vector res;
    int i = 0;
    while(i < nums1.size())
    {
    int pos2 = 0;
    for(int j=0; j

  • @nayankhuman1043
    @nayankhuman1043 3 หลายเดือนก่อน

    understood :)

  • @debadityaghosh7612
    @debadityaghosh7612 4 หลายเดือนก่อน

    great

  • @kartikverma6412
    @kartikverma6412 6 หลายเดือนก่อน +1

    code :-
    class Solution {
    public:
    vector nextGreaterElement(vector& nums1, vector& nums2) {
    //monotonic stack-- ele are stored in a specific order
    stack st;
    unordered_map mp;
    //reverse order traversal
    for(int i=nums2.size()-1;i>=0;i--){
    while(!st.empty() && st.top()

  • @rohitroy20786
    @rohitroy20786 5 หลายเดือนก่อน

    496. Next Greater Element I
    class Solution {
    public:
    vector nextGreaterElement(vector& nums1, vector& nums2) {
    int n=nums2.size();
    stack st;
    map mpp;
    for(int i=n-1;i>=0;i--){
    while(!st.empty() && nums2[i]>=st.top()){
    st.pop();
    }
    if(st.empty()){
    mpp[nums2[i]]=-1;
    }
    else{
    mpp[nums2[i]]=st.top();
    }
    st.push(nums2[i]);
    }
    vector ans;
    for(int i=0;i

  • @pratikhajare228
    @pratikhajare228 21 วันที่ผ่านมา

    for Java bruit force solution :-
    class Solution {
    public int[] nextGreaterElement(int[] nums1, int[] nums2) {

    int n1 = nums1.length;
    int n2= nums2.length;
    int nge [] = new int[n1];
    for(int i=0; i

  • @krrishlather6521
    @krrishlather6521 4 หลายเดือนก่อน +2

    should include the code also

  • @surajbkunte7672
    @surajbkunte7672 5 หลายเดือนก่อน

    vector nextGreaterElement(vector& nums1, vector& nums2) {
    map mpp;
    stack stk;
    for (int i = nums2.size() - 1; i >= 0; i--) {
    while (!stk.empty() && nums2[i] >= stk.top()) {
    stk.pop();
    }
    if(stk.empty()){
    mpp[nums2[i]] = -1;
    }
    else{
    mpp[nums2[i]] = stk.top();
    }
    stk.push(nums2[i]);
    }
    for (int i = 0; i < nums1.size(); i++) {
    nums1[i] = mpp[nums1[i]];
    }
    return nums1;
    }

  • @sumairakhurram2478
    @sumairakhurram2478 หลายเดือนก่อน +1

    But for time complexity there are maximum 1 2 3 4 5 ...pops so 1+2+3+4+....N = N(N+1)/2 which is O(N²)

    • @Xloachtop
      @Xloachtop 28 วันที่ผ่านมา

      No, he explains this in the video. Each element will only at max be popped once, because each element will be pushed at max one time. This means that maximum n elements can be popped throughout the entire execution.

  • @nehasagi2169
    @nehasagi2169 23 วันที่ผ่านมา

    wow

  • @rohitraj-df8qs
    @rohitraj-df8qs 6 หลายเดือนก่อน +4

    why so less views

    • @vrajpatel9259
      @vrajpatel9259 6 หลายเดือนก่อน

      this entire playlist is uploaded a day ago.

  • @alm7677
    @alm7677 6 หลายเดือนก่อน

    Green looks 🤢 good

  • @oyeshxrme
    @oyeshxrme 3 หลายเดือนก่อน

    thanks bhaiya

  • @aryankumar3018
    @aryankumar3018 5 หลายเดือนก่อน

    Understood

  • @rutujashelke4208
    @rutujashelke4208 4 หลายเดือนก่อน

    Understood

  • @abhinavabhi3568
    @abhinavabhi3568 หลายเดือนก่อน

    Understood

  • @bindushree1021
    @bindushree1021 หลายเดือนก่อน

    Understood

  • @fanofabdevillersandmathslo5960
    @fanofabdevillersandmathslo5960 5 วันที่ผ่านมา

    Understood