設計一個有 getMin 功能的棧
【 題目 】
實現一特殊的棧,在實現棧的基本功能的基礎上,再實現返回棧中最小元素的操作。
【 要求 】
1 . pep 、 push 、 getMin 操作的時間複雜度都是 O ( 1 ) 。
2 .設計的棧型別可以使用現成的棧結構。
【 解答 】
在設計上我們使用兩個棧,一個棧用來儲存當前棧中的元素,其功能和一個正常的棧沒有區別,這個棧記為 stackData ;另一個棧用於儲存每一步的最小值,這個棧記為 stackMin 。具體的實現方式有兩種。
第一種設計方案如下。
.壓入資料規則。
假設當前資料為 newNum ,先將其壓入 stackdata 。然後判斷 stackMin 是否為空:
· 如果為空,則 n ewN也壓入 atackMin .
· 如果不為空,則比較newNum 和atackMin 的棧頂元素中哪一個更小
· 如果 n ewNum 更小或兩者相等,則 newNum 也壓入 atackMin
· 如果 stackMin 中棧頂元素小,則 stackMin 不壓入任何內容。
舉例:依次壓入 3 、 4 、 5 、 1 、 2 、的過程中, stockdata 和 atackMin 的變化如圖 1 · 1 所示。
彈出資料規則
先在 stackData 中彈出棧頂元素,記為 value 。然後比較當前 stackMin 的棧頂元紊和 value 哪一個更小.
通過上文提到的壓入規則可知, stackMin 中存在的元素是從棧底到棧頂逐漸變小的, stackMin 棧頂的元素既是 stackMin 棧的最小值,也是當前 stackData 棧的最小值.所以不會出現value比stackMin 的棧頂元素更小的情況,value只可能大於或等於 staokMin 的棧頂元素。當 value等於 stackMin 的棧頂元素時, stackMin 彈出棧頂元素;
當 value 大於 stackMin 的棧頂元素時, stackMin 不彈出棧頂元素二返回value。
很明顯可以看出,壓入與彈出規則是對應的。
· 查詢當前棧中最小值操作
由於上文的壓入資料規則和彈出資料規則可知, stackMin 始終記錄著 stackdata 中的最小值,所以, stackMin 的棧頂元素始終是當前 stackData 中的最小值。
方案一的程式碼實現如 Mytack1 類所示:
第二種方案,小夥伴們可以一起交流一下哦
CSDN社群火爆招募中:https://blog.csdn.net/CSDNedu/article/details/80063505?utm_source=zwqt
相關文章
- 設計一個有getMin功能的棧
- 設計一個有getMin功能的棧(1)
- 設計一個有getMin功能的棧(2)
- 常見面試演算法題JS實現-設計一個有getMin功能的棧面試演算法JS
- 用一個棧實現另一個棧的排序排序
- 程式設計是一個沒有前途的工作程式設計
- 一個程式設計師的運氣有多重要程式設計師
- 有始有終,設計一個結構合理的下載模組
- 從前,有一個女程式設計師……程式設計師
- 一個女程式設計師有話說程式設計師
- 做一個有想法的程式設計師,做一個屬於自己的神器程式設計師
- 一個小時搭建一個全棧 Web 應用框架(下)——美化與功能全棧Web框架
- 數學,離一個程式設計師有多近?程式設計師
- 碼農如何快速打造一個有設計感的網站網站
- 有關程式設計的12個猜想程式設計
- 有前途的程式設計師的14個習慣,你有幾個?程式設計師
- 程式設計師如何能把一個功能說的工作量很大?程式設計師
- 一名全棧設計師的Mac工具箱(設計,開發,效率)全棧Mac
- 設計包含min函式的棧函式
- 親愛的程式設計師們,我有一個很好的創意程式設計師
- 做一個有產品思維的研發:庫表設計
- 有關程式設計師的十個預言程式設計師
- 當一個java程式設計師到底有多難Java程式設計師
- 有前(錢)途的程式設計師的14個習慣,你有幾個?程式設計師
- Java的網路功能與程式設計 一 (轉)Java程式設計
- 全棧 JavaScript 程式設計師的崛起全棧JavaScript程式設計師
- 每到一個階段,都會有一個最火的程式設計師職位,目前就是前端!程式設計師前端
- 聊聊如何實現一個帶有攔截器功能的SPI
- 十個有爭議的程式設計觀點程式設計
- Linkedlist的應用場景:設計佇列、設計棧佇列
- 【介面功能設計】TopThink介面功能設計建議
- Vue的第一個元件設計Vue元件
- 如何設計一個良好的API?API
- 一個程式設計師的自白程式設計師
- 一個程式設計師的困惑?程式設計師
- 我就差一個程式設計的程式設計
- 面試了一個 39 歲程式設計師,我有點慌……面試程式設計師
- 電商專案一般有多少個介面,有哪些功能和作用?