[LeetCode] 682. Baseball Game 棒球游戏
你现在是棒球比赛记录员。
给定一个字符串列表,每个字符串可以是以下四种类型之一:
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 棒球游戏相关推荐
- D37 682. Baseball Game
682. Baseball Game 题目链接 682. Baseball Game 题目分析 给定一个字符串数组,每一个字符串有以下形式: 数字.直接计算得分. +.代表本轮分数为上一轮和上上一轮分 ...
- 【LeetCode击败99%+】Nim 游戏
题目 你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头. 你们轮流进行自己的回合,你作为先手. 每一回合,轮到的人拿掉 1 - 3 块石头. 拿掉最后一块石头的人就是获胜者. 假设你们每一 ...
- [LeetCode]682. 棒球比赛(Baseball Game)Java
一.题目: LeetCode地址 你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. "+&qu ...
- leetcode 682. 棒球比赛(Baseball Game)
目录 题目描述: 示例 1: 示例 2: 解法: 题目描述: 你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 整数(一轮的得分):直接表示您在本轮中获得的积分数. & ...
- LeetCode——682. 棒球比赛
题目描述: 你现在是一场采用特殊赛制棒球比赛的记录员.这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分.比赛开始时,记录是空白的.你会得到一个记录操作的字符串列表 ops,其中 op ...
- LeetCode 682 棒球比赛
你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. "+"(一轮的得分):表示本轮获得 ...
- Leetcode 682. 棒球比赛 解题思路及C++实现
解题思路: 这道题比较简单,就是直接用一个stack,依次处理输入容器中的每一个字符串,要注意的是:将string转为int,C++中函数为stoi(): class Solution { publi ...
- LeetCode简单题之棒球比赛
题目 你现在是一场采用特殊赛制棒球比赛的记录员.这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分. 比赛开始时,记录是空白的.你会得到一个记录操作的字符串列表 ops,其中 ops[ ...
- LeetCode 1535. 找出数组游戏的赢家
文章目录 1. 题目 2. 解题 1. 题目 给你一个由 不同 整数组成的整数数组 arr 和一个整数 k . 每回合游戏都在数组的前两个元素(即 arr[0] 和 arr[1] )之间进行. 比较 ...
- LeetCode 810. 黑板异或游戏(博弈推理)
1. 题目 一个黑板上写着一个非负整数数组 nums[i] . 小红和小明轮流从黑板上擦掉一个数字,小红先手. 如果擦除一个数字后,剩余的所有数字按位异或运算得出的结果等于 0 的话,当前玩家游戏失败 ...
最新文章
- C语言 NULL与0 对应的地址
- wav文件头修复_标记管理音频文件工具:Yate for Mac
- 线程池java.util.concurrent.ThreadPoolExecutor总结
- 【hive】——metastore的三种模式
- Python3 —— if/while/input
- (pytorch-深度学习系列)使用softmax回归实现对Fashion-MNIST数据集进行分类-学习笔记
- Asp.Net MVC中使用ACE模板之Jqgrid
- python---(4) win10 环境下访问MYSQL 数据库
- 【转】每天一个linux命令(11):nl命令
- 路径规划(一) —— 环境描述(Grid Map Feature Map) 全局路径规划(最优路径规划(DijkstraA*star) 概率路径规划(PRMRRT))
- 【每晚20点红包雨】2018天猫聚划算99大促欢聚盛典活动介绍
- HTML炫彩按钮,炫彩流光按钮 html+css
- 计算机等级考试准考证打河南,2019年河南牧院计算机等级考试准考证打印时间...
- android+通过菜单跳转页面,【风马一族_Android】通过菜单的点击,跳转到不同界面...
- C语言 上机课练习题
- MySQL索引分析以及相关面试题
- DNS服务器IP地址大全
- 计算机网络中删除自己的共享,如何删除我的电脑中共享文档
- Android日志打印Util类
- 进程管理(二十二)—CFS调度器
热门文章
- 计算机锁定键盘怎么关机,win10电脑如何用键盘关机(键盘开关机的详细步骤图)...
- el-input设置type为number时,切换为中文输入法输入会让光标上移的问题解决
- Could not resolve type alias 解决方法
- SCI收录中国期刊国家一级期刊名录一览表
- 如何将qlv格式转换为mp4格式?怎么将qlv的文件然后转换成mp4视频?
- 福禄克FLUKE OFP-200-S-MOD/OFP-200-S1490-MOD/OFP-200-S1625-MOD/OptiFiber Pro高动态范围模块
- 写贺卡给毕业师姐怎么写计算机系的,给师兄师姐的毕业贺卡寄语
- 学会忘记其实是一种美德
- 棋牌游戏开发运营技巧列举 如何才能提高平台留存率
- Linux中运行shell脚本的几种方式及其区别(source . ./myscript.sh sh myscript.sh)