摘要:題目描述定義棧的數據結構,請在該類型中實現一個能夠得到棧最小元素的函數。
題目描述
定義棧的數據結構,請在該類型中實現一個能夠得到棧最小元素的min函數。
分析該題目要求實現一個帶有返回當前棧中最小元素功能的數據結構,首先會想到使用一個變量保存當前最小元素的下標,但是仔細一想,如果當前最小元素剛好在棧頂,此時執行pop操作,那么最小元素會被彈出,新的最小元素又上哪兒找呢?比較暴力的方法是出現這種情況時,再遍歷一遍棧就能重新得到最小元素的下標,但是這么暴力操作就沒意思了而且時間復雜度很好。
可以使用雙棧來實現min功能,棧1常規保存元素,棧2保存此時此刻的棧中最小 元素,比如說有元素進棧1,如果該元素小于棧2的棧頂元素,說明新的最小元素就是該進棧元素,否則,最小元素還是棧2的棧頂元素。
var stack1 = []; var stack2 = []; function push(node) { if(stack2.length === 0 && stack1.length === 0){ stack1.push(node); stack2.push(node); } else{ stack1.push(node); var stack2Top = stack2[stack2.length-1]; if(node < stack2Top) stack2.push(node) else stack2.push(stack2Top); } } function pop() { stack2.pop(); return stack1.pop(); } function top() { return stack1[stack1.length-1]; } function min() { return stack2[stack2.length-1]; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/95770.html
摘要:題目定義棧的數據結構,請在該類型中實現一個能夠得到棧中所含最小元素的函數時間復雜度應為。這樣最小值棧的棧頂永遠是當前棧的最小值。 題目 定義棧的數據結構,請在該類型中實現一個能夠得到棧中所含最小元素的min函數(時間復雜度應為O(1))。 思路 1.定義兩個棧,一個棧用于存儲數據,另一個棧用于存儲每次數據進棧時棧的最小值. 2.每次數據進棧時,將此數據和最小值棧的棧頂元素比較,將二者比...
摘要:題目描述設計一個支持,,操作,并能在常數時間內檢索到最小元素的棧。刪除棧頂的元素。檢索棧中的最小元素。示例返回返回返回代碼實現 題目描述 設計一個支持 push,pop,top 操作,并能在常數時間內檢索到最小元素的棧。 push(x) -- 將元素 x 推入棧中。 pop() -- 刪除棧頂的元素。 top() -- 獲取棧頂元素。 getMin() -- 檢索棧中的最小元素。 示例...
文章目錄 一、題目1、題目描述2、基礎框架3、原題鏈接 二、解題報告1、思路分析2、時間復雜度3、代碼詳解 三、本題小知識四、加群須知 一、題目 1、題目描述 ??給你一棵二叉搜索樹,請按 中序遍歷 將其重新排列為一棵遞增順序搜索樹,使樹中最左邊的節點成為樹的根節點,并且每個節點沒有左子節點,只有一個右子節點。??樣例輸入: [5,3,6,2,4,null,8,1,null,null,nu...
摘要:有效二叉搜索樹定義如下節點的左子樹只包含小于當前節點的數。所有左子樹和右子樹自身必須也是二叉搜索樹。而我們二叉搜索樹保證了左子樹的節點的值均小于根節點的值,根節點的值均小于右子樹的值,因此中序遍歷以后得到的序列一定是升序序列。 ...
閱讀 2738·2021-10-11 10:57
閱讀 1569·2021-09-26 09:55
閱讀 1310·2021-09-06 15:11
閱讀 3447·2021-08-26 14:16
閱讀 662·2019-08-30 15:54
閱讀 535·2019-08-30 12:43
閱讀 3290·2019-08-29 16:18
閱讀 2565·2019-08-23 16:14