鱼C论坛

 找回密码
 立即注册
查看: 1597|回复: 8

[技术交流] C++刷leetcode(682. 棒球比赛)【数据结构】

[复制链接]
发表于 2020-4-22 17:54:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 糖逗 于 2020-5-8 17:54 编辑

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

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

  9. 示例 1:

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

  19. 输入: ["5","-2","4","C","D","9","+","+"]
  20. 输出: 27
  21. 解释:
  22. 第1轮:你可以得到5分。总和是:5。
  23. 第2轮:你可以得到-2分。总数是:3。
  24. 第3轮:你可以得到4分。总和是:7。
  25. 操作1:第3轮的数据无效。总数是:3。
  26. 第4轮:你可以得到-4分(第三轮的数据已被删除)。总和是:-1。
  27. 第5轮:你可以得到9分。总数是:8。
  28. 第6轮:你可以得到-4 + 9 = 5分。总数是13。
  29. 第7轮:你可以得到9 + 5 = 14分。总数是27。
  30. 注意:

  31. 输入列表的大小将介于1和1000之间。
  32. 列表中的每个整数都将介于-30000和30000之间。

  33. 来源:力扣(LeetCode)
  34. 链接:https://leetcode-cn.com/problems/baseball-game
  35. 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码



  1.     int calPoints(vector<string>& ops) {
  2.         int res = 0;
  3.         stack<int> temp;
  4.         for (int i = 0; i < ops.size(); i++) {
  5.             if (ops[i] == "+") {
  6.                 int a = temp.top();
  7.                 temp.pop();
  8.                 int b = temp.top();
  9.                 temp.push(a);
  10.                 temp.push(a  + b);
  11.             } else if (ops[i] == "D") {
  12.                 int a = temp.top();
  13.                 temp.push(2 * a);
  14.             } else if (ops[i] == "C") {
  15.                 temp.pop();
  16.             } else {
  17.                 temp.push(stoi(ops[i]));
  18.             }
  19.         }
  20.         while (!temp.empty()) {
  21.             res += temp.top();
  22.             temp.pop();
  23.         }
  24.         return res;
  25.     }
复制代码




注意事项:
1.stack中存储的是每一回合的得分,因为“C"(一个操作,这不是一个回合的分数):表示您获得的最后一个有效 回合的分数是无效的,应该被移除”,所以vector完成不了这个操作,只能使用stack。
2.res根据stack中的每一轮得分加总得到最后结果

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-22 17:55:01 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-14 17:40:43 | 显示全部楼层
用c++怎么写呢??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-14 19:17:15 | 显示全部楼层
大只婧 发表于 2020-6-14 17:40
用c++怎么写呢??

在上面的基础上加上头文件和main函数就可以,这里的代码是leetcode的模式,leetcode的下已经默认头文件和main函数已经实现了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-15 00:26:07 | 显示全部楼层
糖逗 发表于 2020-6-14 19:17
在上面的基础上加上头文件和main函数就可以,这里的代码是leetcode的模式,leetcode的下已经默认头文件和 ...

可以看看完整的码嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-15 00:54:05 | 显示全部楼层
糖逗 发表于 2020-6-14 19:17
在上面的基础上加上头文件和main函数就可以,这里的代码是leetcode的模式,leetcode的下已经默认头文件和 ...

可以看看码嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-15 01:30:35 From FishC Mobile | 显示全部楼层
大只婧 发表于 2020-6-15 00:54
可以看看码嘛

这个就是码呀,leetcode上面都是这样的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-15 01:35:38 | 显示全部楼层
大只婧 发表于 2020-6-15 00:26
可以看看完整的码嘛

我这边只有实现函数,没有完整码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-15 09:24:27 | 显示全部楼层

那我自己试试,谢谢哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 20:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表