L4. Implement Min Stack | Stack and Queue Playlist

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 ธ.ค. 2024

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

  • @devjindal8309
    @devjindal8309 5 หลายเดือนก่อน +53

    Dangerous question with mind blowing explanation ❤

  • @kamalesh4904
    @kamalesh4904 5 หลายเดือนก่อน +28

    For the optimal approach
    Use Long datatype for stack and min to pass edge cases as int may overflow when we multiply it by 2

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

      need to use long long, and nice DP btw

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

      @@studystuff51 thank you :)

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

    took me 1 hour to understand this code. This is awesome. The equation is just 🔥🔥🔥🔥🔥🔥

  • @IamNikhil2121
    @IamNikhil2121 5 หลายเดือนก่อน +3

    timestamps
    0:00 - Question Overview
    1:45 - brute force solving Approach
    4:34 - brute force pseudocode
    6:50 - Brute force Time Complexity analysis
    7:15 - Optimal solving approach
    15:06 -Optimal pseudocode
    19:38 - Time Complexity of Optimal
    20:34 - Outro

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

    for all those who failed at 28th test case
    this worked for me use long instead of int and while returing do typecast

  • @piyushmahale9024
    @piyushmahale9024 5 หลายเดือนก่อน +13

    30% Completed till now ✅✅

  • @rudrajitgupta3688
    @rudrajitgupta3688 3 หลายเดือนก่อน +7

    Thank you striver for the intuition. I tried to implement the min stack using DLL where node represents (val,min,next,prev)
    all in O(1) optn
    push and pop represents addFirst remove first, and top will always hold min

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

      class Data{
      int val;
      int min;
      Data next;
      Data prev;
      Data(int val, int min){
      this.val=val;
      this.min = min;
      this.prev=null;
      this.next=null;
      }
      }
      class MinStack {
      int min;
      Data head;
      Data tail;
      public MinStack() {
      this.min= Integer.MAX_VALUE;
      this.head = new Data(-1, min);
      this.tail = new Data(-1,min);
      this.head.next = this.tail;
      this.tail.prev = this.head;
      }
      public void push(int val) {
      // Data node = new Data(val, this.min);
      if(this.head.next == this.tail){
      min = val;
      Data node = new Data(val,min);
      add(node);
      return;
      }
      min = Math.min(val, this.head.next.min);//-2, -3
      Data node = new Data(val, min);
      add(node);
      }
      //(-3,-3),(0,-2),(-2,-2);
      //min = -3
      public void pop() {
      remove(this.head.next);
      //min = this.head.next.min;
      }
      public int top() {
      return this.head.next.val;
      }
      public int getMin() {
      return this.head.next.min;
      }
      public void add(Data node){
      Data next = this.head.next;// -1 ->20->-1
      node.next= next;
      next.prev=node;
      node.prev=this.head;
      this.head.next=node;
      }
      public void remove(Data node){
      //-1->10->20->-1
      Data next= node.next; //20
      this.head.next= next;
      next.prev = this.head;
      node.next=null;
      node.prev=null;
      }
      }
      /**
      * Your MinStack object will be instantiated and called as such:
      * MinStack obj = new MinStack();
      * obj.push(val);
      * obj.pop();
      * int param_3 = obj.top();
      * int param_4 = obj.getMin();
      */

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

    00:04 Design a minimum stack that includes get min operation
    02:41 Implementing Min Stack by tracking current minimum value while pushing elements.
    05:00 Implementing a min stack with push, pop, and getMin operations
    07:30 Implementing Min Stack using a simple stack and integer max as placeholder.
    09:57 Implementing Min Stack involves inserting modified values and updating the minimum.
    12:26 Modify minimum value in Min Stack implementation
    15:14 Designing a minimum stack by implementing push and pop operations
    17:44 Implementing Min Stack in a Stack structure
    19:58 Implementing Min Stack with optimized approach

  • @aritraambudhdutta201
    @aritraambudhdutta201 7 วันที่ผ่านมา

    Supreme Lord for a reason 🔥🔥🔥🔥

  • @ShaileshS-n6s
    @ShaileshS-n6s 8 วันที่ผ่านมา

    After seeing the equation, i derived the mathematical proof and the complete reasoning of why from scratch myself, so dont bound yourself even on seemingly complex problems guys always give it a try!

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

    it has given medium level LC but i think it is harder to understand until striver comes here to understand us

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

    Thankyou so much Striver for great explanation

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

    watched for ig two or three times finally got it !!

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

    we can just use a variable which stores minimum element ,before every push , we can compare and update accordingly and while popping if we are popping min element , then we can traverse to find the min element...

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

      Since we are trying to achieve getMin in O(1), this approach would not work.

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

    Thank you so much for this explaination. I am following your A-Z sheet . Can you please upload videos of left Question in A-Z sheet and Article as well .

  • @RajChaturvedi-s1r
    @RajChaturvedi-s1r 3 หลายเดือนก่อน +3

    at 4:35 if a interviewer ask us to design a stack we can design it using linked but after designing how we can use in this solution like out of class..

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

    When heap playlist will be launched on youtube?

  • @Rahul-jr4gf
    @Rahul-jr4gf หลายเดือนก่อน

    Thank you so much for amazing explanation

  • @radhepatel6876
    @radhepatel6876 4 หลายเดือนก่อน +5

    For the Second method consider this code as the TUF website's code is generating wrong output for A edge test case
    class MinStack {
    Stack st = new Stack();
    Long min;
    public MinStack(){
    min = Long.MAX_VALUE;
    }

    public void push(int val) {
    Long value = Long.valueOf(val);
    if(st.isEmpty()){
    min = value;
    st.push(value);
    }
    else{
    if(value>min){
    st.push(value);
    }
    else{
    st.push(2*value-min);
    min=value;
    }
    }
    }

    public void pop() {
    if(st.isEmpty()){
    return;
    }
    Long val = st.pop();
    if(val

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

    couldnt understand intuition behind 2*val-min at all.

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

    thank you bhaiya

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

    Understood ❤

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

    understood ❤

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

    wow got lucky, thanks for uploading

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

    His expressions at 12:56 😂😂😂😂

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

    Understood!!

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

    tysm sir

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

    class MinStack {
    public:
    stack st;
    int min;
    MinStack() {
    }

    void push(int val) {
    if(st.empty())
    {
    st.push({val,val});
    min=val;
    }
    else
    {
    if(st.top().second < val)
    min=st.top().second;
    else
    min=val;
    st.push({val,min});
    }

    }

    void pop() {
    st.pop();
    }

    int top() {
    int val=st.top().first;
    return val;
    }

    int getMin() {
    int min=st.top().second;
    return min;
    }
    };

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

    op video and
    explanation

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

    Great!

  • @roiyaruryuga5183
    @roiyaruryuga5183 4 หลายเดือนก่อน +5

    Hello Striver, We really want you to take rest. You have been working really hard lately.

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

      Striver means hardwork

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

      you look for yourself first. nothing's gonna happen with flattering.

  • @THOSHI-cn6hg
    @THOSHI-cn6hg 4 หลายเดือนก่อน +3

    bro looks tired

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

    Thanks alot Bhaiya!!
    Understood

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

    understood

  • @AkashkumarYadav-r4b
    @AkashkumarYadav-r4b 3 หลายเดือนก่อน

    Nice

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

    UNDERSTOOD;

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

    Understood

  • @SunnyKumar-dw9ze
    @SunnyKumar-dw9ze 3 หลายเดือนก่อน

    Why multiplication with 2

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

    ❤❤❤

  • @prathameshjadhav2942
    @prathameshjadhav2942 5 หลายเดือนก่อน +4

    Very low energy #striver_79

  • @arnabdas391
    @arnabdas391 14 วันที่ผ่านมา

    JAVA SOLUTION Commenting for the people at 28th case:
    class MinStack {
    Stack st;
    long Mini;
    public MinStack() {
    st=new Stack();
    Mini=Long.MAX_VALUE;
    }

    public void push(int val) {
    if(st.isEmpty()){
    st.push((long)val);
    Mini=val;
    }
    else if(val>Mini) st.push((long)val);
    else{
    st.push((long)2*val-Mini);
    Mini=val;
    }
    }

    public void pop() {
    long top=st.pop();
    if(topMini) return (int)top;
    return (int)Mini;
    }

    public int getMin() {
    return (int)Mini;
    }
    }

  • @shiva.g1898
    @shiva.g1898 5 หลายเดือนก่อน

    👍👍

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

    lesgoogogogoog

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

    only 22 testcases passed using second method

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

      How about in first method

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

      @@Surya-teja2612 all text case will pass

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

      use ll

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

      #define ll long long
      class MinStack {
      public:
      stack st;
      ll min;
      MinStack() {}
      void push(int val) {
      if(st.empty()) {
      st.push(val);
      min = val;
      } else {
      if(val < min) {
      st.push(2ll * val - min);
      min = val;
      } else {
      st.push(val);
      }
      }
      }
      void pop() {
      ll top = st.top();
      if(top < min) {
      min = 2ll * min - top;
      }
      st.pop();
      }
      int top() {
      ll top = st.top();
      if(top < min) {
      return min;
      } else {
      return top;
      }
      }
      int getMin() {
      return min;
      }
      };
      /**
      * Your MinStack object will be instantiated and called as such:
      * MinStack* obj = new MinStack();
      * obj->push(val);
      * obj->pop();
      * int param_3 = obj->top();
      * int param_4 = obj->getMin();
      */

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

    btw now i got it why striver bhaya is not providing code in the video :) so that we check the website too 😄 damn 6 star coder

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

    understood sirrrr

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

    class MinStack {
    private Stack stack;
    private Stack minStack;
    public MinStack() {
    stack = new Stack();
    minStack = new Stack();
    }
    public void push(int val) {
    stack.push(val);
    if (minStack.isEmpty() || val

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

    Understood ❤

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

    Understood

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

    Nice