#leetCodeブラシタイトルのドキュメンタリーDay8

https://leetcode-cn.com/problems/min-stack/

、ポップ、トップ操作をプッシュするように設計された支持体は、スタックが取得され、一定時間内の最小要素であることができます。

プッシュ(X) -要素xがスタックを押します。
ポップ() -スタックの要素を削除します。
トップ() -先頭の要素を取得します。
getMin() -スタック内の最小の要素を取り出します。


例:

分のありがとう分の感謝=新しい分おかげで();
minStack.push(-2)。
minStack.push(0)。
minStack.push(-3)。
minStack.getMin(); - >返回-3。
minStack.pop();
minStack.top(); - >返回0
minStack.getMin()。- >返回-2。

 

しようとする鶏料理:

私は非常に一定の時間ではないかを理解することができます(O(1)を推測?)だから、タイムアウトを保持する考え方は、最も一般的な方法を書くために開始します。

 

1  クラスMinStack {
 2  公共3      / * *ここにあなたのデータ構造を初期化します。* / 
4      <スタックのint > メイン。
5      スタック< int型 > B;
6      MinStack(){
 7          
8      }
 9      
10      空隙プッシュ(INT X){
 11          main.push(X)
12      }
 13      
14      空隙ポップ(){
 15          main.pop()。
16      }
 17      
18      INTトップ(){
 19          リターンmain.top()。
20      }
 21      
22      int型getMin(){
 23          int型の結果= INT_MAX。
24          ながら(!main.empty()){
 25              であれば(main.top()<結果)結果= main.top()。
26              b.push(main.top())。
27              main.pop()。
28          }
 29          ながら(!b.empty()){
 30              main.push(b.top())。
31              b.pop()。
32          }
 33          リターン結果;
34      }
 35  }。
36  
37  / * *
 38  *あなたMinStackオブジェクトがインスタンス化され、そのように呼ばれます:
 39  * MinStack * OBJ =新しいMinStack()。
40  * obj->プッシュ(X)
41  * obj->ポップ();
42  * INT param_3 = obj->トップ();
43  * INT param_4 = obj-> getMin();
44   * /

 

結果は、タイムアウトした、兄はそれを記述する方法を確認することです

 

礼拝のギャングコード:

時間のための補助スタックスペースを借ります!

1  クラスMinStack {
 2  公共3      / * *ここにあなたのデータ構造を初期化します。* / 
4      <スタックのint > メイン。
5      スタック< int型 > B;
6      MinStack(){
 7          
8      }
 9      
10      空隙プッシュ(INT X){
 11          main.push(X)
12          であれば(b.empty()|| b.top()> = X)b.push(X)
13      }
 14      
15      空隙ポップ(){
 16          、INTトップ= main.top()。
17          main.pop()。
18          であれば(トップ== b.top()){
 19              b.pop()。
20          }
 21      }
 22      
23      int型の上部(){
 24          リターンmain.top()。
25      }
 26      
27      INT getMin(){
 28         リターンb.top()。
29      }
 30  }。
31  
32  / * *
 33  あなたMinStackオブジェクトがインスタンス化され、そのように呼ばれます*:
 34 * MinStack * OBJ =新しいMinStack();
35  * obj->プッシュ(X)
36  * obj->ポップ();
37  * INT param_3 = obj->トップ();
38  * INT param_4 = obj-> getMin();
39   * /

Bスタック効果は最小の要素が格納されています

要素は、B又はBのスタック最上位要素のスタックが空である、主積層体のデータはスタックもある間にスタックがBスタック(なぜそれより大きいより大きいと等しくない場合、例を参照して以下であることをスタックにプッシュされた場合:)

 

同様に、スタックの動作を、スタックの最上部にもBをポップしながらスタックは、単に要素bスタック最上位要素である場合。

 

 

 

出典:ボタン(LeetCode)に滞在
します。https://leetcode-cn.com/problems/min-stackリンクは
すべてのネットワークからの控除が著作権を保有。商業転載は許可公式、非商用の転載は、ソースを明記してくださいお問い合わせください。

おすすめ

転載: www.cnblogs.com/xyy999/p/11801884.html