lintcode 983. 棒球游戏
现在你是棒球比赛分记录员。
给定一个字符串数组,每一个字符串可以是以下4种中的其中一个:
整数 (一个回合的分数): 直接表示这回合你得到的分数。
“+” (一个回合的分数): 表示这回合你获得的分数为前两个 有效 分数之和。
“D” (一个回合的分数): 表示这回合你得到的分数为你上一次获得的有效分数的两倍。
“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。
思路:利用stack先进先出的特性来解决。
样例2:输入: ["5","-2","4","C","D","9","+","+"]
输出: 27
解释:
回合 1: 你可以得到 5 分,和为:5。
回合 2: 你可以得到 -2 分,和为:3。
回合 3: 你可以得到 4 分,和为:7。
操作 1: 回合 3的数据无效,所以和为 3。
回合 4: 你可以得到 -4 分(回合 3的数据已经被移除了),和为:-1。
回合 5: 你可以得到 9 分,和为:8。
回合 6: 你可以得到 -4 + 9 = 5 分,和为:13。
回合 7: 你可以得到 9 + 5 = 14 分,和为27。
注意事项
输入列表的大小在 1 到 1000 之间。
列表中的整数大小在 -30000 到 30000 之间。
class Solution {
public:/*** @param ops: the list of operations* @return: the sum of the points you could get in all the rounds*/int calPoints(vector<string> &ops) {// Write your code hereint len=ops.size();std::stack<int> num;std::stack<int> result;num.push(0);//使得num第一个数为0result.push(0);//使得result第一个数为0,方便处理for (int i = 0; i < len; i++) {/* code */if(ops[i]=="+"){//如果是“+”的情况int temp=num.top();num.pop();int sum=num.top()+temp;//前三步当前回合分数num.push(temp);//将值回位num.push(sum);//添加进新的回合分数result.push(result.top()+num.top());//得到和}else if(ops[i]=="C"){result.push(result.top()-num.top());//去掉无效数值后的结果num.pop();//删除无效数值}else if(ops[i]=="D"){num.push(num.top()*2);//回合应得分数result.push(num.top()+result.top());//应得分数和原分数之和}else{//数字情况int sum=0;bool judge=true;if (ops[i][0] == '-') judge = false;//判断是否负数if(!judge){//负数从第二个字符开始for (int j = 1; j < ops[i].size(); j++) {/* code */sum=sum*10+ops[i][j]-'0';}}else{//正数从第一个字符开始for(int j = 0; j < ops[i].size(); j++) {/* code */sum=sum*10+ops[i][j]-'0';}}if (!judge) sum = -sum;//负数的话加负号num.push(sum);把回合分数放入num中result.push(result.top()+num.top());//和总是原来的和加上新的回合分数}}return result.top();}
};
lintcode 983. 棒球游戏相关推荐
- LintCode 1671. 玩游戏(贪心、难)
1. 题目 N 个人在玩游戏,每局游戏有一个裁判和 N-1 个平民玩家.给出一个数组 A, A[i] 代表玩家 i 至少需要成为平民 A[i] 次,返回最少进行游戏的次数. 样例 1: 输入:A = ...
- LintCode解题目录
看见 LintCode 的代码能力测试CAT(Coding Ability Test)挺好,有倒计时,挺有面试紧迫感.做个记录. 另有本人 LeetCode解题目录.<程序员面试金典>解题 ...
- 细数那些年我们一起玩过的Unity3D游戏(unity开发的游戏有哪些)
经典重现<新仙剑OL> <新仙剑OL>采用跨平台Unity3D引擎,耗资数千万,历时三年多,由台湾大宇正版授权,"仙剑之父"姚壮宪监制的全球首款Unity3 ...
- Unity3D游戏作品大盘点
* 原文链接: http://www.unitymanual.com/404.html 经典重现<新仙剑OL> <新仙剑OL>采用跨平台Unity3D引擎,耗资数千万,历时三年 ...
- 《MLB棒球创造营》:棒球团建·一球入魂
前言 随着时代的发展,很多新生代的父母们开始逐渐关注如何在培养孩子成人的过程当中更好的与孩子交流沟通,市面上各种各样的亲子活动更是层出不穷. 相信大多数人都在国外的电影中看到过爸爸陪儿子传接棒球的桥段 ...
- 《中国棒球》:MLB谱写中国棒球·点燃全民运动
MLB在美国的影响力仅次于NFL(职业橄榄球大联盟),各项业绩都优于NBA.但在中国,则面临完全不同的处境.很多中国人甚至连一场完整的棒球比赛都没有看过,更不会懂得其复杂的比赛规则. 没错,即便已经进 ...
- 《中国棒球》:国家女子棒球队·一棒成名
女子棒球 :未来的无限可能 中国棒球协会.杭州市萧山区文化和广电旅游体育局.杭州市萧山区瓜沥镇人民政府与浙江友成棒垒球俱乐部管理有限公司合作共建的"中国女子棒球队训练基地"签约授牌 ...
- 游戏程序员谈GameAI
游戏程序员谈GameAI 本文选自<游戏软件设计与开发大揭秘>第九章,作者为:(美)Marc Saltzman 译者:何健辉 应光光 陈志远等.此书由清华大学出版社在2000年9月出版,现 ...
- “体育游戏第一股”投资未来,望尘科技走向价值兑现周期
2022年的游戏市场,遗憾以疲弱之势落下帷幕.游戏市场规模与用户数量,均出现了小幅下降,显示出存量市场的典型特征. 但与此同时,更多垂直领域的拳头产品.响应市场需求的精品游戏,却屡屡掀起热潮.去年随世 ...
- 游戏策划设计时所要涉及的基本因数(转)
游戏策划设计时所要涉及的基本因数(转)[@more@] 电子游戏在整个计算机产业的带动下不断地创新.发展着.自从计算机发明,向各个领域发展,到成为我们现在每天工作和生活必不可少的一部分的这个过程中,电 ...
最新文章
- Java IO基础原理你该知道这些
- Mysql5.7-CentOS7安装
- 京东11·11:撬动数据中心的支点——京东阿基米德
- ubuntu mysql deb_Ubuntu 通过Deb 安装 MySQL 5.5 [转载]
- Python编程语言学习:python中与数字相关的函数(取整等)、案例应用之详细攻略
- 转载之NetApp RAID技术介绍
- windows mac 安装lua
- mysqlfor循环中出错继续_Python学习笔记(循环)
- maven 打包时缺少文件_maven父子工程---子模块相互依赖打包时所遇到的问题:依赖的程序包找不到...
- [导入]C#面向对象设计模式纵横谈(24):(行为型模式) Visitor 访问者模式.zip(10.41 MB)...
- js获得服务器时间并实时更新
- php在类方法里面检测错误,是否有任何PHP静态分析器可以检测不存在的类方法调用?...
- CI中写原生SQL(封装查询)
- 爱上Ada语言与系统
- API不治,混合云何以统天下?
- 进程调度算法(c语言)
- 全国所有省份行政区域名标准(全国省份2字母拼音缩写标准参考)
- OA办公系统 Springboot vue 前后分离 跨域 Activiti6 工作流 集成代码生成器
- 程序员如何成为架构师
- html罗马字母怎么打,怎么打罗马数字二 罗马数字 在电脑上怎么打出来呢?