leetcode-682:棒球比赛

简介: leetcode-682:棒球比赛

题目

题目链接

你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。

比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 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

解题

方法一:栈

由于ops一定是正确的,因此就容易了许多

class Solution {
public:
    int calPoints(vector<string>& ops) {
        vector<int> record;
        for(string& c:ops){
            if(c=="+"){
                int l=record.size();
                record.push_back(record[l-1]+record[l-2]);
            }
            else if(c=="D"){
                record.push_back(record.back()*2);
            }
            else if(c=="C"){
                record.pop_back();
            }
            else{
                record.push_back(stoi(c));
            }
        }
        int res=0;
        for(int num:record) res+=num;
        return res;
    }
};


相关文章
|
存储 算法 API
【Qt 基本类】QDateTime类在C++中的应用与深度解析
【Qt 基本类】QDateTime类在C++中的应用与深度解析
721 0
|
存储 Kubernetes Cloud Native
【云原生】k8s组件&架构介绍与K8s最新版部署
【云原生】k8s组件&架构介绍与K8s最新版部署
923 0
|
11月前
|
IDE API 定位技术
Python--API编程:IP地址翻译成实际的物理地址
Python--API编程:IP地址翻译成实际的物理地址
180 0
|
PHP
PHP实现自制随机图片API- 调用文件夹和引用网络图片
PHP实现随机图片API- 调用文件夹和引用网络图片
369 0
|
SQL 分布式计算 MaxCompute
MaxCompute操作报错合集之通过UDF(用户定义函数)请求外部数据库资源并遇到报错,是什么原因
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
545 0
|
SQL 存储 缓存
SqlAlchemy 2.0 中文文档(三十七)(3)
SqlAlchemy 2.0 中文文档(三十七)
100 1
|
数据采集 Python
[python]爬取手机号码前缀和地区信息
[python]爬取手机号码前缀和地区信息
132 0
|
XML 前端开发 Java
《手把手教你》系列技巧篇(十六)-java+ selenium自动化测试-元素定位大法之By xpath下卷(详细教程)
【4月更文挑战第8天】本文介绍了WebDriver中的一种元素定位方法:By xpath。XPath是一种在XML文档中查找信息的语言,由于HTML文档是XML的子集,所以可以使用XPath来定位网页上的元素。XPath定位方法非常强大,几乎可以定位到页面上的任何元素。然而,由于它需要扫描整个页面来找到匹配的元素,所以定位速度相对较慢。
205 0
|
消息中间件 存储 负载均衡
对于钉钉OA事件订阅出现的网络波动导致的通知丢失问题
对于钉钉OA事件订阅出现的网络波动导致的通知丢失问题
251 1
|
存储 弹性计算 运维
阿里云电脑无影云桌面收费标准价格表
阿里云电脑无影云桌面收费标准价格表,阿里云无影云电脑配置具体价格表,无影云桌面4核8G企业办公型云电脑可以免费使用3个月,无影云电脑地域不同价格不同,无影云电脑价格是由云桌面配置、云盘价格、互联网访问带宽价格、AD Connector 价格、桌面组共用桌面session 价格等费用组成
1756 0