C++Leetcode682:棒球比赛
前言
1、采用vector实现。很快有了思路,其中字符串转换为整型的处理,耗费了较长时间,还是参考网上的方法。时间复杂度为O(n)
2、待优化。
题目
你现在是棒球比赛记录员。
给定一个字符串列表,每个字符串可以是以下四种类型之一:
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之间。
实现方法
一、采用vector实现
class Solution {
public:int calPoints(vector<string>& ops) {vector<int> result;int sum = 0;for (int i = 0; i < ops.size(); i++) {if (ops[i] != "+" && ops[i] != "C" && ops[i] != "D") {result.push_back(str2int(ops[i]));}else if (ops[i] == "C") {result.pop_back();}else if (ops[i] == "D") {result.push_back(result.back()*2);}else if (ops[i] == "+") {result.push_back(result[result.size() - 2] + result.back());}}for (int i = 0; i < result.size(); i++) {sum += result[i];}return sum;}//字符串转换为整型int str2int(string s) {stringstream ss;int n;ss << s;ss >> n;return n;}
};
C++Leetcode682:棒球比赛相关推荐
- [Swift]LeetCode682. 棒球比赛 | Baseball Game
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- LeetCode简单题之棒球比赛
题目 你现在是一场采用特殊赛制棒球比赛的记录员.这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分. 比赛开始时,记录是空白的.你会得到一个记录操作的字符串列表 ops,其中 ops[ ...
- LeetCode:棒球比赛【682】
LeetCode:棒球比赛[682] 题目描述 你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. &qu ...
- LeetCode(682)——棒球比赛(JavaScript)
你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. "+"(一轮的得分):表示本轮获得 ...
- leetcode 682. 棒球比赛(Baseball Game)
目录 题目描述: 示例 1: 示例 2: 解法: 题目描述: 你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 整数(一轮的得分):直接表示您在本轮中获得的积分数. & ...
- 数据结构-青蛙杯棒球比赛
[题目来自灰灰考研] (青蛙题精选):.青蛙(frog)杯第一届棒球比赛开赛啦. 你现在是一名记分员,输入一个字符串数组(比赛记录情况),按如下规则计分: 1. 如果该字符串是数字:代表当轮比赛的得分 ...
- [LeetCode]682. 棒球比赛(Baseball Game)Java
一.题目: LeetCode地址 你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. "+&qu ...
- LeetCode——682. 棒球比赛
题目描述: 你现在是一场采用特殊赛制棒球比赛的记录员.这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分.比赛开始时,记录是空白的.你会得到一个记录操作的字符串列表 ops,其中 op ...
- 【leetcode】棒球比赛 c++
题目描述: 你现在是一场采用特殊赛制棒球比赛的记录员.这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分. 比赛开始时,记录是空白的.你会得到一个记录操作的字符串列表 ops,其中 o ...
最新文章
- 三关节机械臂控制需求说明压缩文件中的相关文档说明
- 【Android UI设计与开发】第06期:底部菜单栏(一)使用TabActivity实现底部菜单栏
- 【Web安全】漏洞之王-Sql注入原理与危害解析
- 成功计算出文本类单词的概率
- 基于Ocelot的gRpcHttp网关
- idea报错 电脑死机蓝屏
- Vim/GVim格式化xml文件
- Java Web学习总结(10)学习总结-EL表达式
- 北京玉渊潭开启春节模式 五大版块吸引游客
- [刷题]算法竞赛入门经典(第2版) 6-7/UVa804 - Petri Net Simulation
- 2 imwrite中文路径_如何为FreePBX/Asterisk配置中文语音支持
- TypeScript:对象
- android模拟器上https抓包
- 飞桨EasyDL闪退解决方法
- JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
- dedecms自定义表单 发送邮件
- 计算机图形学:B样条画枫叶
- 地球投影的分类和实例
- 百度商业系统大规模微服务分布式监控实践
- QML自定义控件Button