https://leetcode.com/problems/min-stack/description/
문제 이해
MinStack을 디자인
Stack과 모든게 동일하지만
getMin()을 호출 시 stack에 담겨있는 값 중 가장 최소값을 반환해야 한다.
- Stack함수를 이용한 풀이
class MinStack {
private Stack<Integer> data;
private Stack<Integer> minData;
public MinStack() {
data = new Stack<>();
minData = new Stack<>();
}
public void push(int val) {
data.add(val);
if(minData.isEmpty()){
minData.add(val);
} else {
int min = minData.peek();
minData.add(min <= val ? min : val);
}
}
public void pop() {
if(!data.isEmpty()){
data.pop();
minData.pop();
}
}
public int top() {
return data.peek();
}
public int getMin() {
return minData.peek();
}
}
- ArrayList를 사용한 풀이
class MinStack {
private ArrayList<Integer> data;
private ArrayList<Integer> minData;
private int top;
private int minTop;
public MinStack() {
data = new ArrayList<>();
minData = new ArrayList<>();
top = -1;
minTop = -1;
}
public void push(int val) {
top++;
data.add(top, val);
if(minTop == -1){
minTop++;
minData.add(minTop, val);
} else {
int min = minData.get(minTop);
minTop++;
minData.add(minTop, min <= val ? min : val);
}
}
public void pop() {
if(top > -1){
top--;
minTop--;
}
}
public int top() {
return data.get(top);
}
public int getMin() {
return minData.get(minTop);
}
}
아직 많이 어설픈 것 같고
ArrayList를 이용하는것은 이도저도 아닌상태로 풀게 된 것 같다.
'Algorithm > leetcode' 카테고리의 다른 글
[leetcode] 1021.Remove Outermost Parentheses (0) | 2023.08.28 |
---|---|
[leetcode] 844.Backspace String compare (0) | 2023.08.27 |
[leetcode] 856.Score of Parentheses(Retry) (0) | 2023.08.20 |
[leetcode] 682.Baseball Game (0) | 2023.08.19 |
[leetcode] Valid Parentheses(유효한 괄호) (0) | 2023.08.16 |