zoukankan      html  css  js  c++  java
  • 剑指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;

    }
    }


  • 相关阅读:
    JVM(7) Java内存模型与线程
    JVM(6) 字节码执行引擎
    JVM(5) 类加载机制
    JVM(4) 类文件结构
    JVM(3) 垃圾收集器与内存分配策略
    python的with
    python http server handle json
    c++文件读写
    python字符串处理
    python decorator
  • 原文地址:https://www.cnblogs.com/Transkai/p/10905234.html
Copyright © 2011-2022 走看看