LeetCode:棒球比赛【682】
LeetCode:棒球比赛【682】
题目描述
你现在是棒球比赛记录员。
给定一个字符串列表,每个字符串可以是以下四种类型之一:
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。
题目分析
使用栈来保存有效分数,比如["5","2","C","D","+"],对于5、2来说我们直接入栈【5,2】,C会让上一个分数失效,则出栈2,此时栈【5】,D得分为上个有效分数翻倍,所以我们使得10入栈【5,10】,+得分为前两个有效分数的和,故15入栈【5,10,15】,最后腾空栈,并把出栈的元素累加到一个临时变量上,返回临时变量即可。
Java题解
- class Solution {
- public int calPoints(String[] ops) {
- Stack<Integer> stack = new Stack<>();
- for(String op :ops)
- {
- switch (op){
- case "+":{
- int num1 = stack.pop();
- int num2 = stack.pop();
- stack.push(num2);
- stack.push(num1);
- stack.push(num1+num2);
- continue;
- }
- case "D":{
- int num1 = stack.pop();
- stack.push(num1);
- stack.push(2*num1);
- continue;
- }
- case "C":{
- stack.pop();
- continue;
- }
- }
- stack.push(Integer.valueOf(op));
- }
- int score = 0;
- while (!stack.isEmpty())
- score+=stack.pop();
- return score;
- }
- }
LeetCode:棒球比赛【682】的更多相关文章
- 【Leetcode】【简单】【682棒球比赛】【JavaScript】
题目 682. 棒球比赛 你现在是棒球比赛记录员.给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数.2. "+"(一轮的 ...
- Java实现 LeetCode 682 棒球比赛(暴力)
682. 棒球比赛 你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. "+"(一轮的 ...
- [Swift]LeetCode682. 棒球比赛 | Baseball Game
You're now a baseball game point recorder. Given a list of strings, each string can be one of the 4 ...
- Leetcode682.Baseball Game棒球比赛
你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. "+"(一轮的得分):表示本轮获得 ...
- LeetCode682 棒球比赛
题目描述: 你现在是棒球比赛记录员.给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数.2. "+"(一轮的得分):表示本 ...
- Leetcode算法比赛----First Unique Character in a String
问题描述 Given a string, find the first non-repeating character in it and return it's index. If it doesn ...
- [LeetCode&Python] Problem 682. Baseball Game
You're now a baseball game point recorder. Given a list of strings, each string can be one of the 4 ...
- Leetcode算法比赛----Longest Absolute File Path
问题描述 Suppose we abstract our file system by a string in the following manner: The string "dir\n ...
- Leetcode算法比赛---- Lexicographical Numbers
问题描述 Given an integer n, return 1 - n in lexicographical order. For example, given 13, return: [1,10 ...
随机推荐
- 13 memcache服务检查
[root@cache01 scripts]# vim mem_check.sh #!/bin/bash count_mem=$(netstat -lntup|grep memcached|wc -l ...
- JXTA 2: 具有高性能、海量伸缩性的 P2P 网络
这是来自developerWorks的一篇文章,地址是 https://www.ibm.com/developerworks/cn/java/j-jxta2/ ———————————————————— ...
- 第一百四十六节,JavaScript,百度分享保持居中--下拉菜单
JavaScript,百度分享保持居中--下拉菜单 百度分享保持居中 效果图 html代码 <div id="share"> <h2>分享到</h2& ...
- 【BZOJ】3394: [Usaco2009 Jan]Best Spot 最佳牧场(floyd)
http://www.lydsy.com/JudgeOnline/problem.php?id=3394 裸的floyd.. #include <cstdio> #include < ...
- grep检索文本
grep [OPTIONS] PATTERN [FILE...] grep zifuchuan * 不行的话来一个: grep zifuchuan */* 不行的话再来一个: grep zifuc ...
- Oozie安装与部署
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3885162.html 安装基础环境: Hadoop – 2.2.0 Linux – Centos 6. ...
- Hadoop2的FN安装(federated namespace)
尝试了简单的安装hadoop2后,我们再来尝试一下hdfs的一项新功能:FN.这项技术可以解决namenode容量不足的问题.它采用多个namenode来共享datanode的方式,每个namenod ...
- jquery取iframe中元素
采取方法: $("#iframe_path").contents().find(".select_path_hide").val(); DOM方法:父窗口操作I ...
- 【转】防止CListCtrl闪烁的几种方法
转载出处:http://blog.sina.com.cn/s/blog_5ee42ba30100g50j.html 1.使用SetRedraw禁止窗口重绘,操作完成后,再恢复窗口重绘 m_ctlLis ...
- [Go语言]从Docker源码学习Go——指针和Structs
这两天在看reflect这个包在Docker中的使用时,遇到了各种问题,最后虽然知道怎么用了. 但是对于这块的原理还不是太懂,于是把"THE WAY TO GO"中关键的几章看了下 ...