你现在是棒球比赛记录员。
给定一个字符串列表,每个字符串可以是以下四种类型之一:
1.整数(一轮的得分):直接表示您在本轮中获得的积分数。
2. "+"(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。
3. "D"(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。
4. "C"(一个操作,这不是一个回合的分数):表示您获得的最后一个有效 回合的分数是无效的,应该被移除。

每一轮的操作都是永久性的,可能会对前一轮和后一轮产生影响。
你需要返回你在所有回合中得分的总和。

示例 1:

输入: ["5","2","C","D","+"]
输出: 30
解释: 
第1轮:你可以得到5分。总和是:5。
第2轮:你可以得到2分。总和是:7。
操作1:第2轮的数据无效。总和是:5。
第3轮:你可以得到10分(第2轮的数据已被删除)。总数是:15。
第4轮:你可以得到5 + 10 = 15分。总数是:30。

示例 2:

输入: ["5","-2","4","C","D","9","+","+"]
输出: 27
解释: 
第1轮:你可以得到5分。总和是:5。
第2轮:你可以得到-2分。总数是:3。
第3轮:你可以得到4分。总和是:7。
操作1:第3轮的数据无效。总数是:3。
第4轮:你可以得到-4分(第三轮的数据已被删除)。总和是:-1。
第5轮:你可以得到9分。总数是:8。
第6轮:你可以得到-4 + 9 = 5分。总数是13。
第7轮:你可以得到9 + 5 = 14分。总数是27。

注意:

输入列表的大小将介于1和1000之间。
    列表中的每个整数都将介于-30000和30000之间。

解法:栈,用一个stack记录,循环字符串,如果是数字直接进栈,如果当前字符是操作符对栈里面的数字进行相应处理,'+'把栈里面最后两个数字相加然后如栈,'D'把栈里的最后一个数字乘以2然后如栈,'C'移除栈里面的最后一个元素。最后返回栈里所有元素的和。

class Solution(object):def calPoints(self,ops):history = []for op in ops:if op == '+':history.append(history[-1]+history[-2])elif op=='D':history.append(history[-1]*2)elif op=='C':history.pop()else:history.append(int(op))return sum(history)
if __name__=='__main__':s = Solution()history = ["5","2","C","D","+"]print(s.calPoints(history))

[LeetCode] 682. Baseball Game 棒球游戏相关推荐

  1. D37 682. Baseball Game

    682. Baseball Game 题目链接 682. Baseball Game 题目分析 给定一个字符串数组,每一个字符串有以下形式: 数字.直接计算得分. +.代表本轮分数为上一轮和上上一轮分 ...

  2. 【LeetCode击败99%+】Nim 游戏

    题目 你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头. 你们轮流进行自己的回合,你作为先手. 每一回合,轮到的人拿掉 1 - 3 块石头. 拿掉最后一块石头的人就是获胜者. 假设你们每一 ...

  3. [LeetCode]682. 棒球比赛(Baseball Game)Java

    一.题目: LeetCode地址 你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. "+&qu ...

  4. leetcode 682. 棒球比赛(Baseball Game)

    目录 题目描述: 示例 1: 示例 2: 解法: 题目描述: 你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 整数(一轮的得分):直接表示您在本轮中获得的积分数. & ...

  5. LeetCode——682. 棒球比赛

    题目描述: 你现在是一场采用特殊赛制棒球比赛的记录员.这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分.比赛开始时,记录是空白的.你会得到一个记录操作的字符串列表 ops,其中 op ...

  6. LeetCode 682 棒球比赛

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

  7. Leetcode 682. 棒球比赛 解题思路及C++实现

    解题思路: 这道题比较简单,就是直接用一个stack,依次处理输入容器中的每一个字符串,要注意的是:将string转为int,C++中函数为stoi(): class Solution { publi ...

  8. LeetCode简单题之棒球比赛

    题目 你现在是一场采用特殊赛制棒球比赛的记录员.这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分. 比赛开始时,记录是空白的.你会得到一个记录操作的字符串列表 ops,其中 ops[ ...

  9. LeetCode 1535. 找出数组游戏的赢家

    文章目录 1. 题目 2. 解题 1. 题目 给你一个由 不同 整数组成的整数数组 arr 和一个整数 k . 每回合游戏都在数组的前两个元素(即 arr[0] 和 arr[1] )之间进行. 比较 ...

  10. LeetCode 810. 黑板异或游戏(博弈推理)

    1. 题目 一个黑板上写着一个非负整数数组 nums[i] . 小红和小明轮流从黑板上擦掉一个数字,小红先手. 如果擦除一个数字后,剩余的所有数字按位异或运算得出的结果等于 0 的话,当前玩家游戏失败 ...

最新文章

  1. C语言 NULL与0 对应的地址
  2. wav文件头修复_标记管理音频文件工具:Yate for Mac
  3. 线程池java.util.concurrent.ThreadPoolExecutor总结
  4. 【hive】——metastore的三种模式
  5. Python3 —— if/while/input
  6. (pytorch-深度学习系列)使用softmax回归实现对Fashion-MNIST数据集进行分类-学习笔记
  7. Asp.Net MVC中使用ACE模板之Jqgrid
  8. python---(4) win10 环境下访问MYSQL 数据库
  9. 【转】每天一个linux命令(11):nl命令
  10. 路径规划(一) —— 环境描述(Grid Map Feature Map) 全局路径规划(最优路径规划(DijkstraA*star) 概率路径规划(PRMRRT))
  11. 【每晚20点红包雨】2018天猫聚划算99大促欢聚盛典活动介绍
  12. HTML炫彩按钮,炫彩流光按钮 html+css
  13. 计算机等级考试准考证打河南,2019年河南牧院计算机等级考试准考证打印时间...
  14. android+通过菜单跳转页面,【风马一族_Android】通过菜单的点击,跳转到不同界面...
  15. C语言 上机课练习题
  16. MySQL索引分析以及相关面试题
  17. DNS服务器IP地址大全
  18. 计算机网络中删除自己的共享,如何删除我的电脑中共享文档
  19. Android日志打印Util类
  20. 进程管理(二十二)—CFS调度器

热门文章

  1. 计算机锁定键盘怎么关机,win10电脑如何用键盘关机(键盘开关机的详细步骤图)...
  2. el-input设置type为number时,切换为中文输入法输入会让光标上移的问题解决
  3. Could not resolve type alias 解决方法
  4. SCI收录中国期刊国家一级期刊名录一览表
  5. 如何将qlv格式转换为mp4格式?怎么将qlv的文件然后转换成mp4视频?
  6. 福禄克FLUKE OFP-200-S-MOD/OFP-200-S1490-MOD/OFP-200-S1625-MOD/OptiFiber Pro高动态范围模块
  7. 写贺卡给毕业师姐怎么写计算机系的,给师兄师姐的毕业贺卡寄语
  8. 学会忘记其实是一种美德
  9. 棋牌游戏开发运营技巧列举 如何才能提高平台留存率
  10. Linux中运行shell脚本的几种方式及其区别(source . ./myscript.sh sh myscript.sh)