【leetcode】棒球比赛 c++
题目描述:
你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。
比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第 i 项操作,ops 遵循下述规则:
整数 x - 表示本回合新获得分数 x
“+” - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。
“D” - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录此操作时前面总是存在一个有效的分数。
“C” - 表示前一次得分无效,将其从记录中移除。题目数据保证记录此操作时前面总是存在一个有效的分数。
请你返回记录中所有得分的总和。
示例 1:
输入:ops = [“5”,“2”,“C”,“D”,"+"]
输出:30
解释:
“5” - 记录加 5 ,记录现在是 [5]
“2” - 记录加 2 ,记录现在是 [5, 2]
“C” - 使前一次得分的记录无效并将其移除,记录现在是 [5].
“D” - 记录加 2 * 5 = 10 ,记录现在是 [5, 10].
“+” - 记录加 5 + 10 = 15 ,记录现在是 [5, 10, 15].
所有得分的总和 5 + 10 + 15 = 30
示例2:
输入:ops = [“5”,"-2",“4”,“C”,“D”,“9”,"+","+"]
输出:27
解释:
“5” - 记录加 5 ,记录现在是 [5]
“-2” - 记录加 -2 ,记录现在是 [5, -2]
“4” - 记录加 4 ,记录现在是 [5, -2, 4]
“C” - 使前一次得分的记录无效并将其移除,记录现在是 [5, -2]
“D” - 记录加 2 * -2 = -4 ,记录现在是 [5, -2, -4]
“9” - 记录加 9 ,记录现在是 [5, -2, -4, 9]
“+” - 记录加 -4 + 9 = 5 ,记录现在是 [5, -2, -4, 9, 5]
“+” - 记录加 9 + 5 = 14 ,记录现在是 [5, -2, -4, 9, 5, 14]
所有得分的总和 5 + -2 + -4 + 9 + 5 + 14 = 27
示例3:
输入:ops = [“1”]
输出:1
提示:
1 <= ops.length <= 1000
ops[i] 为 “C”、“D”、"+",或者一个表示整数的字符串。整数范围是 [-3 * 104, 3 * 104]
对于 “+” 操作,题目数据保证记录此操作时前面总是存在两个有效的分数
对于 “C” 和 “D” 操作,题目数据保证记录此操作时前面总是存在一个有效的分数
代码:
#include<sstream>
class Solution {public:int solve(string s){int score;stringstream ss;if(s[0]!='-'){ss<<s;ss>>score;}else{ss<<s.substr(1);ss>>score;score=score*(-1);}return score;}int calPoints(vector<string>& ops) {int sum=0;int n=ops.size();vector<int> v;for(int i=0;i<n;i++){if(ops[i]=="+"){ //这次得分是前两次分数之和v.push_back(v[v.size()-1]+v[v.size()-2]);}else if(ops[i]=="C"){ //移除上一次分数v.pop_back();}else if(ops[i]=="D"){ //这次得分是上一次分数的两倍v.push_back(2*v[v.size()-1]);}else{ v.push_back(solve(ops[i])); }}for(int i=0;i<v.size();i++)sum+=v[i];return sum;}
};
按照题目描述计算这一轮的分数,加入vector中保存,最后加和即可。
使用pop_back()即可删除最后一个元素(“即上一轮得分”)。
总结:
vector 中 pop_back() 删除最后一个元素。
【leetcode】棒球比赛 c++相关推荐
- LeetCode简单题之棒球比赛
题目 你现在是一场采用特殊赛制棒球比赛的记录员.这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分. 比赛开始时,记录是空白的.你会得到一个记录操作的字符串列表 ops,其中 ops[ ...
- LeetCode:棒球比赛【682】
LeetCode:棒球比赛[682] 题目描述 你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. &qu ...
- [LeetCode]682. 棒球比赛(Baseball Game)Java
一.题目: LeetCode地址 你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. "+&qu ...
- 《LeetCode刷题》682. 棒球比赛(java篇)
题目描述: 你现在是一场采用特殊赛制棒球比赛的记录员.这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分. 比赛开始时,记录是空白的.你会得到一个记录操作的字符串列表 ops,其中 o ...
- LeetCode(682)——棒球比赛(JavaScript)
你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. "+"(一轮的得分):表示本轮获得 ...
- leetcode 682. 棒球比赛(Baseball Game)
目录 题目描述: 示例 1: 示例 2: 解法: 题目描述: 你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 整数(一轮的得分):直接表示您在本轮中获得的积分数. & ...
- LeetCode——682. 棒球比赛
题目描述: 你现在是一场采用特殊赛制棒球比赛的记录员.这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分.比赛开始时,记录是空白的.你会得到一个记录操作的字符串列表 ops,其中 op ...
- [LeetCode javaScript] 682. 棒球比赛
你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. "+"(一轮的得分):表示本轮获得 ...
- LeetCode 682 棒球比赛
你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. "+"(一轮的得分):表示本轮获得 ...
最新文章
- 《团队合作大坑合集》
- 通过图形界面配置Exchange2010 DAG
- matplotlib练习
- what you CAN LEARN FROM AUTOMATOR AND APPLE STEVE JOBS
- 自我学习的技巧和建议
- 重新开始我的园子生活了
- linux redhat 6.3: /lib/libz.so.1: no version information available
- HDU5187 zhx#39;s contest(计数问题)
- 带你自学Python系列(一):变量和简单数据类型(附思维导图)
- 转:开启nginx的gzip压缩的相关参数设置
- 数据挖掘产品 IBM SPSS Modeler 新手使用入门
- Windows下使用platform.pk8 和platform.x509.pem生成jks签名文件
- IDEA 2017破解 license server激活
- 【SSL证书】如何使用 FreeSSL (V2.8.0) 申请免费证书及安装
- 云计算第二天总结 10.29
- c语言 英文单词频率统计 哈希存储
- 10005 内联函数
- 复旦Moss团队:Moss参数规模约是ChatGPT的1/10;贾跃亭再获FF执行官身份;PowerToys新版发布|极客头条
- 布隆过滤器:一种低空间成本的判断元素是否存在的方式
- Contest1479 - 2018-ZZNU-ACM集训队 夏季队内积分赛 (3) Problem K 易水寒
热门文章
- 不接电、不用网,这只“千里眼”什么来头?
- mybatis 一对多映射 xml
- 【InSAR 笔记1】ASF网站哨兵一号批量下载
- fsck修复以及在lost+found找丢失的文件
- 写在2010年最后一天
- 凡是过去,皆为序章,
- Bert:一切过往,皆为序章
- CentOS 7安装Jenkins
- 解决EnforceNotMet: grad_op_maker_ should not be null Operator GradOpMaker has not been registered. at
- 阿波罗STM32F429开发板关于USART3的应用(WIFI/蓝牙/GPS)