学习随笔

今天去刷LeetCode上的题,发现一个都不会,有点尴尬。只能看着题解慢慢做,一个字累。

今天粘两个刷的题

public class Offer09 {
   public static void main(String[] args) {
      CQuece cQuece=new CQuece();
      System.out.println(cQuece.deleteHead());
      cQuece.appendTail(3);
      cQuece.appendTail(5);
      System.out.println(cQuece.deleteHead());
      System.out.println(cQuece.deleteHead());
   }
}
//两栈模拟队列,leetcode上的题
class CQuece{
   Deque<Integer> inStack;
   Deque<Integer> outStack;
   public CQuece(){
      //初始化两个栈
      inStack=new ArrayDeque<Integer>();
      outStack=new ArrayDeque<Integer>();
      System.out.println("null");
   }
   public void appendTail(int value){
      //添加元素进栈
      inStack.push(value);
      System.out.println("null");
   }
   public int deleteHead(){
      //out栈没有元素,进入下个判断
       if (outStack.isEmpty()){
          //int栈没有元素,证明没有元素弹出,返回-1
          if (inStack.isEmpty()){
             return -1;
          }
          in2out();
       }
       return outStack.pop();
   }
   private void in2out(){
      //将int栈中元素添加到out栈,因为栈是先进后出,所以放到out栈时顺序是倒过来的,栈对象名.pop()方法是弹出一个顶部元素
      while (!inStack.isEmpty()){
         outStack.push(inStack.pop());
      }
   }
}
View Code
public class Offer30 {
    public static void main(String[] args) {
        MinStack stack=new MinStack();
        stack.push(-2);
        stack.push(0);
        stack.push(-3);
        System.out.println(stack.min());
        stack.pop();
        System.out.println(stack.top());
    }
}

class MinStack{
    Deque<Integer> Stack;
    //minStack是存放最小值的栈
    Deque<Integer> minStack;

    public MinStack(){
        Stack=new ArrayDeque<Integer>();
        minStack=new ArrayDeque<Integer>();
        //minStack栈压入一个默认的值,为Int的最大值
        minStack.push(Integer.MAX_VALUE);
    }
   public void push(int x){
        //同时将x入两个栈
        Stack.push(x);
        //压入是比较栈顶元素和压入元素大小,压入元素小于栈顶元素,压入,否则再次压入顶部元素,因为顶部元素本来就最小值,minStack存放的是Stack栈的最小值
       //.peek()是返回这个栈的顶部元素
       if(x<minStack.peek()){
           minStack.push(x);
       }else {
           minStack.push(minStack.peek());
       }
//        minStack.push(Math.min(minStack.peek(),x));
   }
   public void pop(){
        Stack.pop();
        minStack.pop();
    }
    public int top(){
        return Stack.peek();
    }
    public int min(){
        return minStack.peek();
    }
}
View Code

 

posted @ 2022-04-30 21:44  chenghaixinag  阅读(16)  评论(0编辑  收藏  举报