• 剑指offer 20.举例让抽象具体化 包含min函数的栈


    题目描述

    定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
     
     
    代码如下:

    import java.util.Stack;
    import java.util.Arrays;
    public class Solution {

    private int size;
    private Stack<Integer> minStack=new Stack<Integer>();
    private int min=Integer.MAX_VALUE;
    private Integer[] elements = new Integer[10];

    private void ensureCapacity(int size) {
    // TODO Auto-generated method stub
    int len = elements.length;
    if(size > len){
    int newLen = (len*3)/2+1; //每次扩容方式
    elements = Arrays.copyOf(elements, newLen);
    }
    }



    public void push(int node) {
    ensureCapacity(size+1);
    elements[size++]=node;
    if (node<=min) {
    minStack.push(node);
    min=minStack.peek();
    }else {
    minStack.push(min);
    }

    }

    public void pop() {
    Integer top=top();
    if (top!=null) {
    elements[size-1]=(Integer)null;
    }
    size--;
    minStack.pop();
    min=minStack.peek();

    }

    public int top() {

    if(!empty()){
    if(size-1>=0)
    return elements[size-1];
    }
    return (Integer) null;

    }
    public boolean empty(){
    return size == 0;
    }
    public int min() {

    return min;

    }
    }


  • 相关阅读:
    游记-HNOI2019
    题解-COCI2015Norma
    题解-Codeforces671D Roads in Yusland
    题解-POI2014 Supercomputer
    笔记-莫队的强制在线
    题解-HAOI2018全套
    题解-UOJ455 雪灾与外卖
    题解-Codeforces917D Stranger Trees
    题解-AtCoder Code-Festival2017 Final-J Tree MST
    Linux 配置svn
  • 原文地址:https://www.cnblogs.com/Transkai/p/10905234.html
Copyright © 2020-2023  润新知