zoukankan      html  css  js  c++  java
  • 剑指offer30题

    定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。

    看到这个 题目,第一想法就是,我要不定义一个变量,指向当前栈中最小的值,每次入栈,就和最小值进行比较,如果比最小值小,则最小值指向该值,否则最小值依旧。

    但很快遇到问题,如果在出栈时,最小值出来后,比最小值小的值呢?无法查到了啊!

    于是思路出来了,用一个辅助栈,第一次将入栈的值放入,接下来每一次,和栈顶的值进行比较,如果比它小,则将该值放入,否则把栈顶的值再次放入。

    此题参考剑指offer书的思路。

    下面附代码。

    package com.algorithm04;
    
    import java.util.Stack;
    
    public class Algorithm30 {
    	Stack<Integer> date = new Stack<Integer>();
    	Stack<Integer> min_date = new Stack<Integer>();
    
    	public void push(int node) {
    		date.push(node);
    		if(min_date.size()==0||min_date.peek()>node){
    			min_date.push(node);
    		}else{
    			min_date.push(min_date.peek());
    		}
    	}
    
    	public void pop() {
    		date.pop();
    		min_date.pop();
    	}
    
    	public int top() {
    		return date.peek();
    	}
    
    	public int min() {
    		return min_date.peek();
    	}
    
    	public static void main(String[] args) {
    		
    	}
    }
    

      

  • 相关阅读:
    Django ORM 之F、Q查询与事务
    Django ORM 之基于对象、双下划线查询
    Django ORM
    Django 模板层
    Django视图层
    Django 路由控制
    Django完成常用四大功能
    Django 框架之前
    HTTP协议
    CSS-学习笔记五
  • 原文地址:https://www.cnblogs.com/CloudStrife/p/7348213.html
Copyright © 2011-2022 走看看