栈和队列之设计一个有getMin(得到最小值)功能的栈
生活随笔
收集整理的這篇文章主要介紹了
栈和队列之设计一个有getMin(得到最小值)功能的栈
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有2中方案,分別用類和內部類實現了
import java.util.Stack;/*** @author chenyu 第一種設計:* 題目:設計一個有getMin功能的棧,設計一個特殊的棧,在實現棧的基本功能的基礎上,再實現返回棧中最小元素的操作* 要求:1 pop push getMin操作的時間復雜度都是O(1)* 2 設計的棧類型可以使用線程的棧結構* 思路:壓入數據規則:假設當前數據時value,先將其壓入stackData,然后判斷stackMin是否為空,* 如果為空,則value壓入stackMin* 如果不能空,則比較value和stackMin中棧頂元素的哪一個更小* 如果value更小或者兩者相等,則將value也壓入stackMin* 如果value中棧頂元素小,則stackMin不壓入任何內容,如下例子* 1-------->1* 2------->無* 1-------->1* 5-------->無* 4-------->無* 3-------->3* 彈出數據規則:由壓入數據規則可知,棧頂元素是最小的,先彈出stackData棧頂元素value,當value等于stackMin棧頂元素的時候,stackMin彈出數據* 當
總結
以上是生活随笔為你收集整理的栈和队列之设计一个有getMin(得到最小值)功能的栈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android之退出应用关闭项目每个Ac
- 下一篇: 栈和队列之用2个栈实现一个队列