題目:
成都創(chuàng)新互聯公司專注于湛江企業(yè)網站建設,成都響應式網站建設,購物商城網站建設。湛江網站建設公司,為湛江等地區(qū)提供建站服務。全流程按需網站設計,專業(yè)設計,全程項目跟蹤,成都創(chuàng)新互聯公司專業(yè)和態(tài)度為您提供的服務
定義棧的數據結構,請在該類型中實現一個能夠得到棧最小元素的min函數。
思路一:
通過每次在壓入棧頂的元素與當前最小元素相比后,保存一遍最小元素,每次彈出,都彈出兩個,這個就能得到棧當前最小元素了
代碼:
class Solution { public: void push(int value) { if(s1.size()==0) { s1.push(value); int min=value; s1.push(min); } else { int min=s1.top(); if(value<min) { min=value; } s1.push(value); s1.push(min); } } //彈出兩次 void pop() { int min=s1.top(); s1.pop(); int val=s1.top(); s1.pop(); } int top(){ int min=s1.top(); s1.pop(); int val=s1.top(); s1.push(min); return val; } int min() { return s1.top(); } private: stack<int> s1; };
思路二:利用兩個棧,一個棧用于壓入數據,另一個棧用于壓入數據時的最小元素。無論最小元素是不是壓棧的元素,都保存到第二個棧中
代碼:
class Solution { public: void push(int value) { if(s1.size()==0) { s1.push(value); s2.push(value); } else { s1.push(value); int min=s2.top(); if(min>value) { s2.push(value); } else { s2.push(min); } } } void pop() { if(!s1.empty()) { s1.pop(); s2.pop(); } } int top() { return s1.top(); } int min() { return s2.top(); } private: stack<int> s1,s2; };
本文標題:劍指offer之面試題21:包含min函數的棧
文章URL:http://chinadenli.net/article20/gichjo.html
成都網站建設公司_創(chuàng)新互聯,為您提供電子商務、Google、標簽優(yōu)化、手機網站建設、關鍵詞優(yōu)化、網站排名
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯