前言:
现在大家对“坐在马桶上看算法6”大概比较珍视,兄弟们都需要剖析一些“坐在马桶上看算法6”的相关资讯。那么小编在网摘上收集了一些对于“坐在马桶上看算法6””的相关内容,希望你们能喜欢,我们一起来了解一下吧!题目:
设计一个自己的数据结构,满足添加元素会加入到尾部,删除元素从首部删除。并且实现能在常数时间内获取其最小值。
题目理解:
显然,增加和删除是“先进先出”的操作。那么这种数据结构就是队列。那么如何在常数时间内获得队列中的大值呢?
思路:设计一个辅助栈,始终让栈顶存储元素的最大值。
import java.util.LinkedList;import java.util.Queue;import java.util.Stack;public class MaxQueue { private Stack<Integer> maxStack; private Queue<Integer> ansQueue; public MaxQueue() { maxStack=new Stack<>(); ansQueue=new LinkedList<>(); } public void enQueue(int e) { if (maxStack.isEmpty()||maxStack.peek()<e) { maxStack.add(e); }else { maxStack.add(maxStack.peek()); } ansQueue.add(e); } public void deQueue() { if (ansQueue.isEmpty()) { return; } maxStack.remove(0); ansQueue.remove(); } public int getMax() { return maxStack.peek(); }}
后记:与之对应的leetcode155()最小栈类似。这个比起leetcode的需要稍微的转个弯。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #坐在马桶上看算法6