国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Leetcode 155. Min Stack

2019-11-11 03:03:27
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

push(x) -- Push element x onto stack.pop() -- Removes the element on top of the stack.top() -- Get the top element.getMin() -- Retrieve the minimum element in the stack.Example:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.getMin(); --> Returns -3.minStack.pop();minStack.top(); --> Returns 0.minStack.getMin(); --> Returns -2.

s思路: 1. 關(guān)鍵就是最小值的計(jì)算。每次進(jìn)來(lái)一個(gè)數(shù),計(jì)算出最小值,然后把這個(gè)最小值當(dāng)個(gè)小尾巴和這個(gè)數(shù)放一起就可以了。比如,存成pair。也就是,相當(dāng)于做了distributed的操作,讓每個(gè)數(shù)進(jìn)來(lái)的時(shí)候,就告訴這個(gè)數(shù),現(xiàn)在誰(shuí)是最小值,等有人問(wèn)現(xiàn)在最小值是多少,站在stack頂上的哥們就掏出自己知道的最小值回答他! 2.調(diào)試的時(shí)候,容易忽略一點(diǎn):往stack push數(shù)據(jù)時(shí),容易想到計(jì)算當(dāng)前最小值,但往外pop數(shù)據(jù)時(shí),卻忽略了也要重新update最小值。即使這也想到了,卻容易忽略一個(gè)極端情況:當(dāng)stack被pop空了后,當(dāng)前最小值需要回到初始化的值INT_MAX。 3. 通過(guò)一番琢磨自己的思路,發(fā)現(xiàn)思路的問(wèn)題:1. 不注重對(duì)稱性,本來(lái)更新最小值是在操作的全過(guò)程都需要的,包括push和pop,這是最大的事實(shí),而頭腦里面的思維和這個(gè)事實(shí)還沒(méi)有明顯的對(duì)接,只是明顯知道需要在push時(shí)計(jì)算,沒(méi)有意識(shí)在pop的時(shí)候也需要計(jì)算,而push和pop是對(duì)稱的操作。以后對(duì)這種對(duì)稱的操作,都應(yīng)該同時(shí)平等的考慮,沒(méi)有誰(shuí)重要或不重要,我想這應(yīng)該是潛意識(shí)里給push進(jìn)來(lái)這個(gè)操作賦予了更高優(yōu)先級(jí)和更重要位置,從而pop這個(gè)操作就給選擇性遺忘。因此,需要打破這種人為的貼標(biāo)簽的態(tài)度,認(rèn)為某個(gè)操作重要,作為一個(gè)完整的系統(tǒng),任何一部分都同等重要,或都不重要! 4. 還有一點(diǎn)是:對(duì)極限的考慮。極限情況,就是當(dāng)stack空的時(shí)候,是否stack里面所有的狀態(tài)都恢復(fù)到初始狀態(tài)。這就需要有極限的思維,站在極端的情況下看問(wèn)題,看到的世界就不同。但首先需要有意識(shí)的站在極端的世界里去,就自然可以看到解決的方法!立場(chǎng)決定了視野!

class MinStack {PRivate: int curmn; vector<pair<int,int>> res;public: /** initialize your data structure here. */ MinStack() { curmn=INT_MAX; } void push(int x) { curmn=min(x,curmn); res.push_back({x,curmn}); } void pop() { if(res.empty()) return; res.pop_back(); curmn=res.empty()?INT_MAX:getMin();//bug: } int top() { return res.back().first; } int getMin() { return res.back().second; }};/** * Your MinStack object will be instantiated and called as such: * MinStack obj = new MinStack(); * obj.push(x); * obj.pop(); * int param_3 = obj.top(); * int param_4 = obj.getMin(); */
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 珲春市| 瑞安市| 镇沅| 尉氏县| 彭山县| 福建省| 从化市| 卫辉市| 元阳县| 安化县| 灵石县| 延寿县| 黎平县| 托克托县| 庄浪县| 咸丰县| 望奎县| 平武县| 体育| 海晏县| 无锡市| 桦甸市| 农安县| 温宿县| 德江县| 牟定县| 天长市| 白城市| 连平县| 象山县| 元谋县| 时尚| 新民市| 德江县| 陈巴尔虎旗| 瓦房店市| 厦门市| 通化市| 太保市| 额敏县| 惠州市|