题目描述:

现在你是棒球比赛分记录员。

给定一个字符串数组,每一个字符串可以是以下4种中的其中一个:

  1. 整数 (一个回合的分数): 直接表示这回合你得到的分数。
  2. "+" (一个回合的分数): 表示这回合你获得的分数为前两个 有效 分数之和。
  3. "D" (一个回合的分数): 表示这回合你得到的分数为你上一次获得的有效分数的两倍。
  4. "C" (一种操作,而非一个回合的分数): 表示你上回合的有效分数是无效的,需要移除。

每一轮的操作都是永久性的,可能会影响之前和之后的一轮。

你需要返回在所有回合中获得总分数。

按照自己的思路写了一下,虽然能够达到效果,但发现自己的解题思路稀烂,我的代码如下:

from typing import (List,
)class Solution:"""@param ops: the list of operations@return:  the sum of the points you could get in all the rounds"""def cal_points(self, ops: List[str]) -> int:# Write your code herestr_array = opsprevious_one=0previous_two=0sum_num=0for i in range(0,len(str_array)):if str_array[i] == 'C':sum_num -= previous_oneprevious_one = previous_twoelif str_array[i] == 'D':sum_num += (previous_one * 2)previous_two = (previous_one * 2)elif str_array[i] == '+':sum_num += previous_two + previous_oneelse:tmpInt = int(str_array[i])sum_num += tmpIntprevious_two = previous_oneprevious_one = tmpIntreturn sum_numops = ["5","2","C","D","+"]
a=Solution()
result=a.cal_points(ops)
print(result)

妥妥的过程化,以及更没有用到List的特性, 然后按照官方的答案重写了一遍,如下

from typing import (List,
)class Solution:"""@param ops: the list of operations@return:  the sum of the points you could get in all the rounds"""def cal_points(self, ops: List[str]) -> int:# Write your code herestr_array = []for i in ops:if i == 'C':str_array.pop()elif i == 'D':str_array.append(str_array[len(str_array) - 1] * 2)elif i == '+':str_array.append(str_array[len(str_array) - 2]+str_array[len(str_array) - 1])else:str_array.append(int(i))return sum(str_array)ops = ["5","-2","4","C","D","9","+","+"]
a=Solution()
result=a.cal_points(ops)
print(result)

这个明显优雅多了

1.利用list特性方法pop移除list中最后一个元素,符合C流程的条件

2.利用list特性方法append将新分数更新进list,并且可以直接通过下标拿到符合D条件的list中存储的分数进行计算

3.利用Python自带的sum函数可以对元组或list进行迭代计算(真方便)

lintcode算法-3 983 · 棒球游戏相关推荐

  1. 算法实现自动扫雷游戏

    算法实现自动扫雷游戏 1.游戏的构思 2.算法伪代码的实现 3.算法的实现 1.首先需要建立起游戏的整个框架(棋盘的绘制,地雷的生成,基本函数的实现等) 2.构思AI算法的大概样貌(先尝试写伪码) v ...

  2. 【游戏中的算法】取火柴游戏算法

    文章目录 一.取火柴游戏算法: 二.C/C++实现代码: 1.模拟两个人随机取火柴: 2.电脑随机取火柴,用户输入取火柴: 一.取火柴游戏算法: 取火柴游戏是一个非常简单有趣的小游戏,只要计算好步骤就 ...

  3. 算法训练 24点游戏

    算法训练 24点游戏 1.问题描述 2.输入格式 3.输出格式 4.分析 5.代码 第一版:蓝桥杯版(搜索算法) 后面会出力扣版的24点游戏的代码分析 1.问题描述 问题: 24点游戏是一个非常有意思 ...

  4. 数据结构和算法(十)递归-迷宫游戏

    1. 数据结构和算法(十)递归-迷宫游戏 1.1 迷宫游戏   今天做一个简单的迷宫游戏,用二维数实现地图,让程序自动寻路的小游戏. 1.2 简单的迷宫 简单的迷宫 用二维数实现地图,找路策略:[右- ...

  5. 前端算法js:跳格子游戏

    // 前端算法js:跳格子游戏 let arrFlag, arrNode, stepAll; // 节点遍历状态,节点的相邻启动点数组,是否完成所有步骤 function jumpGame2(num, ...

  6. 领扣LintCode算法问题答案-83. 落单的数 II

    领扣LintCode算法问题答案-83. 落单的数 II 目录 83. 落单的数 II 描述 样例 1: 样例 2: 题解 鸣谢 83. 落单的数 II 描述 给出 3 * n + 1 个非负整数,除 ...

  7. 领扣LintCode算法问题答案-1438. 较大分组的位置

    领扣LintCode算法问题答案-1438. 较大分组的位置 目录 1438. 较大分组的位置 描述 样例 1: 样例 2: 样例 3: 题解 鸣谢 1438. 较大分组的位置 描述 在一个由小写字母 ...

  8. 领扣LintCode算法问题答案-175. 翻转二叉树

    领扣LintCode算法问题答案-175. 翻转二叉树 目录 175. 翻转二叉树 鸣谢 175. 翻转二叉树 翻转一棵二叉树.左右子树交换. 样例 1: 输入: {1,3,#} 输出: {1,#,3 ...

  9. 【蓝桥杯算法提高VIP-开灯游戏(两种超易理懂解法:暴力/位操作(切换位))(纯正C语言代码)】

    蓝桥杯算法提高VIP-开灯游戏 题目描述 有9盏灯与9个开关,编号都是1~9. 每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的). 具体如下: 第一个开关控制第二, ...

  10. 使用HTML5 canvas和光线投影算法创建伪3D 游戏

    为什么80%的码农都做不了架构师?>>>    作者 Jacob Seidelin · 2008年11月28日 本文翻译自 Creating pseudo 3D games with ...

最新文章

  1. android View.isShown() 和 getVisibility() 的区别
  2. Ubuntu死机解决方法汇总
  3. 一个ASP站内搜索的实例源代码
  4. 奖客富翁系统python_作业 2018-12-28 20.1 奖客富翁
  5. OpenCV使用FacemarkAAM
  6. python返回字符串长度的函数_Python如何查找字符串的长度?(代码示例)
  7. C# 调用动态链接库读取二代身份证信息
  8. OCP China Day 2021:开放计算十年,以全球协作打破创新边界
  9. bootstrap datetimepicker、bootstrap datepicker日期组件对范围的简单封装
  10. Linux 超级漂亮的 Shell
  11. 纵坐标是横的还是竖的_600*1200墙砖横贴好,还是竖贴好?讲讲这两种贴法的问题...
  12. Github上关于iOS的各种开源项目集合
  13. mac 电脑 java wifi密码尝试器
  14. 我爱淘二次冲刺阶段2
  15. 常用传感器讲解七--红外警报传感器(KY-008)
  16. 2个Python学习网站制作教程
  17. STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记二(2):Cortex-M3处理器内存模型
  18. Unity3D开发工程师
  19. 解压chm后由hhc生成html索引页面
  20. 阿里云王文彬:希望云计算支撑百亿设备

热门文章

  1. 想自学编程?这么多编程自学网站,总有一个适合你吧!
  2. word文档单独删除或修改首页或某一页的页眉页脚及其下划线
  3. 如何更改Win8,8.1中文版到英文版,亲测!
  4. 管理经济学【六】之 成本分析
  5. 用Python的turtle画一个正方形圆形五角星
  6. 中国第一政经博客 数学
  7. 抓取知网摘要、搜狗微信文章、搜狗新闻的爬虫
  8. html页面如何嵌套if标签,IF嵌套10个以上
  9. iPad Java编辑器_学会这五款软件 让iPad Pro在你手里变得更强大
  10. 第五章---面向对象---小练习