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;
    }
}
© gaohueric all right reserved,powered by Gitbook文件修订时间: 2021-12-08 23:22:22

results matching ""

    No results matching ""