2024/9/16 LeetCode Hot100 Stack
This commit is contained in:
parent
94ad2b4248
commit
8999e23702
|
@ -0,0 +1,47 @@
|
|||
package com.cool.hot100.stack;
|
||||
|
||||
import java.util.Stack;
|
||||
|
||||
/**
|
||||
* Created with IntelliJ IDEA.
|
||||
*
|
||||
* @Author: Cool
|
||||
* @Date: 2024/09/16/13:55
|
||||
* DayNumber 1
|
||||
* Hard 2
|
||||
* Level 4
|
||||
* @Description LeetCode 151题
|
||||
*/
|
||||
public class MinStack {
|
||||
private Stack<Integer> stack;
|
||||
private Stack<Integer> minStack;
|
||||
|
||||
public MinStack() {
|
||||
stack=new Stack<>();
|
||||
minStack=new Stack<>();
|
||||
}
|
||||
|
||||
public void push(int val) {
|
||||
stack.push(val);
|
||||
if(minStack.isEmpty()||minStack.peek()>=val){
|
||||
minStack.push(val);
|
||||
}
|
||||
}
|
||||
|
||||
public void pop() {
|
||||
|
||||
if(stack.pop().equals(minStack.peek())){
|
||||
minStack.pop();
|
||||
}
|
||||
}
|
||||
|
||||
public int top() {
|
||||
return stack.peek();
|
||||
}
|
||||
|
||||
public int getMin() {
|
||||
return minStack.peek();
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
package com.cool.hot100.stack;
|
||||
|
||||
import java.util.Stack;
|
||||
|
||||
/**
|
||||
* Created with IntelliJ IDEA.
|
||||
*
|
||||
* @Author: Cool
|
||||
* @Date: 2024/09/16/17:52
|
||||
* DayNumber 2
|
||||
* Hard 2
|
||||
* Level 6
|
||||
*/
|
||||
public class Num394 {
|
||||
public String decodeString(String s) {
|
||||
StringBuilder res = new StringBuilder();
|
||||
int multi = 0;
|
||||
Stack<Integer> multiStack = new Stack<>();
|
||||
Stack<String> resStack = new Stack<>();
|
||||
for (char c : s.toCharArray()) {
|
||||
if (c == '[') {
|
||||
multiStack.push(multi);
|
||||
multi = 0;
|
||||
resStack.push(res.toString());
|
||||
res = new StringBuilder();
|
||||
} else if (c == ']') {
|
||||
int currentMulti = multiStack.pop();
|
||||
StringBuilder temp = new StringBuilder();
|
||||
for (int i = 0; i < currentMulti; i++) {
|
||||
temp.append(res);
|
||||
}
|
||||
res = new StringBuilder(resStack.pop() + temp);
|
||||
} else if (c >= '0' && c <= '9') {
|
||||
multi = multi * 10 + Integer.parseInt(c + "");
|
||||
} else {
|
||||
res.append(c);
|
||||
}
|
||||
}
|
||||
return res.toString();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue