1. 题目描述(简单难度)
[success] 682. 棒球比赛
2. 解法一:Deque 双端队列实现
因为每次遇到 ++,DD,CC 时,我们需要对之前的数字进行操作,所以我们可以创建一个栈,用来存放数字。
当我们遇到数字,就压入栈,遇到符号,就对应从栈中获取数字,做出对应操作即可。
class Solution {
public int calPoints(String[] ops) {
int res = 0;
Deque<Integer> deque = new ArrayDeque<>();
for(int i=0;i<ops.length;i++){
if(ops[i].equals("C")){
deque.pollLast();
}
else if(ops[i].equals("D")){
deque.offerLast(2* deque.peekLast());
}
else if(ops[i].equals("+")){
int score = deque.pollLast();
int ans = deque.peekLast()+ score;
deque.offerLast(score);
deque.offerLast(ans);
}
else{
deque.offerLast(Integer.valueOf(ops[i]));
}
}
for(Integer i : deque){
res = res + i;
}
return res;
}
}