定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))
生活随笔
收集整理的這篇文章主要介紹了
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
思想1:(Java程序員面試寶典)
用空間換時間
兩個棧sd存數據,sm存最小值
存入時:
? ? ? ? 若sm為空,兩個直接存數據;
? ? ? ? 若sm不為空,待存數據與sm的棧頂元素比較,小于時存入,否則不存
出棧:
? ? ? ? 若sd的棧頂元素和sm的相等,兩個都彈出
? ? ? ? 不等,則只是sd彈出
min():
? ? ? ? 直接彈出sm的棧頂元素
import java.util.Stack;public class Solution {Stack<Integer> sd=new Stack<Integer>();Stack<Integer> sm=new Stack<Integer>();public void push(int node) {sd.push(node);if(sm.isEmpty()){sm.push(node);}else {if(node<sm.peek())sm.push(node);}}public void pop() {if(sd.isEmpty())return;if(sd.peek()==sm.peek()){sd.pop();sm.pop();}else{sd.pop();}}public int top() {return sd.peek();}public int min() {if(sm.isEmpty())return Integer.MAX_VALUE;elsereturn sm.peek();} }?
總結
以上是生活随笔為你收集整理的定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 输入一个矩阵,按照从外向里以顺时针的顺序
- 下一篇: 层序遍历二叉树