zoukankan      html  css  js  c++  java
  • 包含min函数的栈(剑指offer-20)

    题目描述

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

    注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。

    题目解析

    Java里Stack的peek方法是返回栈顶的元素但不移除它,但Stack的pop方法是会移除的。

    题目答案

     1 import java.util.Stack;
     2 
     3 public class Solution {
     4 
     5     private Stack<Integer> dataStack= new Stack<>();//数据栈
     6     private Stack<Integer> minStack= new Stack<>();//最小数的栈
     7 
     8     public void push(int node) {
     9         dataStack.push(node);
    10         if(minStack.isEmpty() || minStack.peek()>dataStack.peek()){
    11             minStack.push(dataStack.peek());
    12         }
    13         else minStack.push(minStack.peek());
    14     }
    15     
    16     public void pop() {
    17         if(!dataStack.isEmpty()) dataStack.pop();
    18         if(!minStack.isEmpty()) minStack.pop();
    19     }
    20     
    21     public int top() {
    22         return dataStack.peek();// 取出数据栈的栈顶元素
    23     }
    24     
    25     public int min() {
    26         return minStack.peek();//取出含min函数的栈的栈顶元素
    27     }
    28 }
  • 相关阅读:
    c++ builder 获取命令行参数
    c++ builder 只允许程序运行一个实例
    jQuery学习笔记(三)
    jQuery学习笔记(二)
    jQuery实现一个弹出登陆层的效果
    jQuery学习笔记(一)
    20117月
    201112学习
    21125
    211211
  • 原文地址:https://www.cnblogs.com/yzhengy/p/13226813.html
Copyright © 2011-2022 走看看