美文网首页
栈-E682-棒球比赛

栈-E682-棒球比赛

作者: 三次元蚂蚁 | 来源:发表于2019-03-19 23:20 被阅读0次

题目

  • 概述:给你一个字符串列表,字符串列表的每一项表示积分或者操作,你需要通过累加每个积分以及执行每一项操作计算最后得分

  • 输入:[1, 1000]的字符串列表

  • 输入子项:

  1. 整数:直接表示本回合积分,范围为[-30000, 30000]
  2. “+”:本轮积分为前两回合积分的和
  3. “D”:本轮积分为前一回合积分的两倍
  4. “C”:移除前一回合获得的积分

"C"以及被"C"操作移除的回合都不算作回合

思路

  1. 由于该问题需要频繁操作前一回合或前两回合的数据,所以选用栈这种数据结构

  2. 依次执行每个字符串所代表的操作:

  • case 整数:直接入栈
  • case "+":出栈,计算出栈的数和栈顶的数的和记为s,入栈,将s入栈
  • case "D":将是当前栈顶的数的2倍的数入栈
  • case "C":出栈
  1. 出栈直到栈为空并累加求和

代码

class Solution {
    public int calPoints(String[] ops) {
        LinkedList<Integer> stack = new LinkedList<>();
        
        int num, temp;
        for (String op : ops) {
            switch (op) {
                case "+":
                    temp = stack.pop();
                    num = temp + stack.peek();
                    stack.push(temp);
                    stack.push(num);
                    break;
                case "D":
                    stack.push(stack.peek() * 2);
                    break;
                case "C":
                    stack.pop();
                    break;
                default:
                    stack.push(Integer.valueOf(op));
                    break;
            }
        }
        
        int result = 0;
        while (!stack.isEmpty()) {
            result += stack.pop();
        }
        
        return result;
    }
}

相关文章

  • 栈-E682-棒球比赛

    题目 概述:给你一个字符串列表,字符串列表的每一项表示积分或者操作,你需要通过累加每个积分以及执行每一项操作计算最...

  • 682. 棒球比赛、面试题 03.04. 化栈为队

    今天是栈操作。 682. 棒球比赛[https://leetcode-cn.com/problems/baseba...

  • JavaScript 数据结构(栈)棒球比赛

    题目你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表...

  • 棒球比赛

    你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在...

  • 棒球比赛

    你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。 比...

  • 棒球比赛

    昨天我们进行了一场棒球比赛,其实这比赛也不是真正的棒球比赛,连棒都没有。 我们打的是几个学过棒球的同学。一开局,我...

  • ARTS 第9周

    ARTS 第9周分享 [TOC] Algorithm 682. 棒球比赛 [思路] 用一个栈来存储所有的分数即可 ...

  • 游戏规则

    如果你要去参加一场棒球比赛,你得先了解棒球比赛的规则,棒球场有特定的形状和大小,在比赛时,每队只有9名队员上场比赛...

  • 682. 棒球比赛

    你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在...

  • 682. 棒球比赛

    你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在...

网友评论

      本文标题:栈-E682-棒球比赛

      本文链接:https://www.haomeiwen.com/subject/fienmqtx.html