免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
12.スタック操作帯の最小
スタックを実装するには、次の操作をサポートします。
-
プッシュ(valが)スタックヴァルにプッシュします
-
ポップ()先頭の要素をポップし、ポップアップ要素に戻ります
-
分()は、スタックの要素の最小値を返します
それはO(1)オーバーヘッドを必要とします。
サンプル
サンプル2:
入力:
プッシュ(1)
(I)
プッシュ(2)
(I)
プッシュ(3)
(I)
出力:
1
1
1
注意事項
分)なしデジタルスタック(ことを確実にするために呼び出されていません
public class MinStack {
Stack<Integer> stack;
int min=Integer.MAX_VALUE;
public MinStack() {
// do intialization if necessary
stack=new Stack<>();
}
/*
* @param number: An integer
* @return: nothing
*/
public void push(int number) {
// write your code here
if (min>number)min=number;
stack.push(number);
}
/*
* @return: An integer
*/
public int pop() {
// write your code here
int ret = stack.pop();
if (ret == min ) {
min = Integer.MAX_VALUE;
if ( !stack.empty()) {
for (int i = 0; i < stack.size(); i++) {
if (min > stack.get(i)) {
min = stack.get(i);
}
}
}
}
return ret;
}
/*
* @return: An integer
*/
public int min() {
// write your code here
if (stack.empty())return -1;
return min;
}
}