• 剑指offer——包含min函数的栈


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

    该题是自己第一次采用编程的方式来实现Java中栈的功能,故直接借鉴了大牛的代码

     1 import java.util.Stack;
     2 import java.util.Arrays;
     3 
     4 public class Solution {
     5 //借用辅助栈存储min的大小,定义了栈结构
     6     private int size;
     7     private int min = Integer.MAX_VALUE;
     8     private Stack<Integer> minStack = new Stack<Integer>();
     9     private Integer[] elements = new Integer[10];
    10     public void push(int node) {
    11         ensureCapacity(size+1);
    12         elements[size++] = node;
    13         if(node<=min){
    14             minStack.push(node);
    15             min = minStack.peek();
    16         }else{
    17             minStack.push(min);
    18         }
    19     }
    20     private void ensureCapacity(int size){
    21         int len = elements.length;
    22         if(size>len){
    23             int newLen = (len*3)/2+1;//每次扩容方式
    24             elements = Arrays.copyOf(elements, newLen);
    25         }
    26     }
    27     public void pop() {
    28         Integer top = top();
    29         if(top != null){
    30             elements[size-1] = (Integer) null;
    31         }
    32         size--;
    33         minStack.pop();
    34         min = minStack.peek();
    35     }
    36     public int top() {
    37         if(!empty()){
    38             if(size-1>=0)
    39                 return elements[size-1];
    40         }
    41         return (Integer) null;
    42     }
    43     public boolean empty(){
    44         return size == 0;
    45     }
    46     public int min() {
    47         return min;
    48     }
    49 }

    其中peek()函数是查看栈顶元素而不移除它。其实看完后仍旧有一点小迷茫。

    如果想理解可以参看

    https://www.cnblogs.com/jose1125/p/5294972.html

    待理解更深的时候前来更新。

  • 相关阅读:
    java连接Ldap
    REGEXP_LIKE,REGEXP_INSTR,REGEXP_SUBSTR,REGEXP_REPLACE
    正则表达式学习笔记
    旋转的播放按钮
    折叠table中的tr
    css选择器.md
    清除浮动.md
    jquery-validate使用.md
    EL表达式.md
    C标签的使用.md
  • 原文地址:https://www.cnblogs.com/10081-AA/p/10732261.html
Copyright © 2020-2023  润新知