LeetCode:棒球比赛【682】

题目描述

你现在是棒球比赛记录员。
给定一个字符串列表,每个字符串可以是以下四种类型之一:
1.整数(一轮的得分):直接表示您在本轮中获得的积分数。
2. "+"(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。
3. "D"(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。
4. "C"(一个操作,这不是一个回合的分数):表示您获得的最后一个有效 回合的分数是无效的,应该被移除。

每一轮的操作都是永久性的,可能会对前一轮和后一轮产生影响。
你需要返回你在所有回合中得分的总和。

示例 1:

  1. 输入: ["5","2","C","D","+"]
  2. 输出: 30
  3. 解释:
  4. 1轮:你可以得到5分。总和是:5
  5. 2轮:你可以得到2分。总和是:7
  6. 操作1:第2轮的数据无效。总和是:5
  7. 3轮:你可以得到10分(第2轮的数据已被删除)。总数是:15
  8. 4轮:你可以得到5 + 10 = 15分。总数是:30

示例 2:

  1. 输入: ["5","-2","4","C","D","9","+","+"]
  2. 输出: 27
  3. 解释:
  4. 1轮:你可以得到5分。总和是:5
  5. 2轮:你可以得到-2分。总数是:3
  6. 3轮:你可以得到4分。总和是:7
  7. 操作1:第3轮的数据无效。总数是:3
  8. 4轮:你可以得到-4分(第三轮的数据已被删除)。总和是:-1
  9. 5轮:你可以得到9分。总数是:8
  10. 6轮:你可以得到-4 + 9 = 5分。总数是13
  11. 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题解

  1. class Solution {
  2. public int calPoints(String[] ops) {
  3. Stack<Integer> stack = new Stack<>();
  4. for(String op :ops)
  5. {
  6. switch (op){
  7. case "+":{
  8. int num1 = stack.pop();
  9. int num2 = stack.pop();
  10. stack.push(num2);
  11. stack.push(num1);
  12. stack.push(num1+num2);
  13. continue;
  14. }
  15. case "D":{
  16. int num1 = stack.pop();
  17. stack.push(num1);
  18. stack.push(2*num1);
  19. continue;
  20. }
  21. case "C":{
  22. stack.pop();
  23. continue;
  24. }
  25. }
  26. stack.push(Integer.valueOf(op));
  27. }
  28. int score = 0;
  29. while (!stack.isEmpty())
  30. score+=stack.pop();
  31. return score;
  32. }
  33. }

  

LeetCode:棒球比赛【682】的更多相关文章

  1. 【Leetcode】【简单】【682棒球比赛】【JavaScript】

    题目 682. 棒球比赛 你现在是棒球比赛记录员.给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数.2. "+"(一轮的 ...

  2. Java实现 LeetCode 682 棒球比赛(暴力)

    682. 棒球比赛 你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. "+"(一轮的 ...

  3. [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 ...

  4. Leetcode682.Baseball Game棒球比赛

    你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. "+"(一轮的得分):表示本轮获得 ...

  5. LeetCode682 棒球比赛

    题目描述: 你现在是棒球比赛记录员.给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数.2. "+"(一轮的得分):表示本 ...

  6. 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 ...

  7. [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 ...

  8. Leetcode算法比赛----Longest Absolute File Path

    问题描述 Suppose we abstract our file system by a string in the following manner: The string "dir\n ...

  9. Leetcode算法比赛---- Lexicographical Numbers

    问题描述 Given an integer n, return 1 - n in lexicographical order. For example, given 13, return: [1,10 ...

随机推荐

  1. 13 memcache服务检查

    [root@cache01 scripts]# vim mem_check.sh #!/bin/bash count_mem=$(netstat -lntup|grep memcached|wc -l ...

  2. JXTA 2: 具有高性能、海量伸缩性的 P2P 网络

    这是来自developerWorks的一篇文章,地址是 https://www.ibm.com/developerworks/cn/java/j-jxta2/ ———————————————————— ...

  3. 第一百四十六节,JavaScript,百度分享保持居中--下拉菜单

    JavaScript,百度分享保持居中--下拉菜单 百度分享保持居中 效果图 html代码 <div id="share"> <h2>分享到</h2& ...

  4. 【BZOJ】3394: [Usaco2009 Jan]Best Spot 最佳牧场(floyd)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3394 裸的floyd.. #include <cstdio> #include < ...

  5. grep检索文本

    grep [OPTIONS] PATTERN [FILE...] grep zifuchuan  * 不行的话来一个: grep zifuchuan  */* 不行的话再来一个: grep zifuc ...

  6. Oozie安装与部署

    原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3885162.html 安装基础环境: Hadoop – 2.2.0  Linux – Centos 6. ...

  7. Hadoop2的FN安装(federated namespace)

    尝试了简单的安装hadoop2后,我们再来尝试一下hdfs的一项新功能:FN.这项技术可以解决namenode容量不足的问题.它采用多个namenode来共享datanode的方式,每个namenod ...

  8. jquery取iframe中元素

    采取方法: $("#iframe_path").contents().find(".select_path_hide").val(); DOM方法:父窗口操作I ...

  9. 【转】防止CListCtrl闪烁的几种方法

    转载出处:http://blog.sina.com.cn/s/blog_5ee42ba30100g50j.html 1.使用SetRedraw禁止窗口重绘,操作完成后,再恢复窗口重绘 m_ctlLis ...

  10. [Go语言]从Docker源码学习Go——指针和Structs

    这两天在看reflect这个包在Docker中的使用时,遇到了各种问题,最后虽然知道怎么用了. 但是对于这块的原理还不是太懂,于是把"THE WAY TO GO"中关键的几章看了下 ...