码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer30题

时间:2017-08-11 23:10:53      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:题目   最小   否则   min   stat   blog   new   imp   str   

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的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) {
		
	}
}

  

剑指offer30题

标签:题目   最小   否则   min   stat   blog   new   imp   str   

原文地址:http://www.cnblogs.com/CloudStrife/p/7348213.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!