lintcode算法-3 983 · 棒球游戏
题目描述:
现在你是棒球比赛分记录员。
给定一个字符串数组,每一个字符串可以是以下4种中的其中一个:
整数
(一个回合的分数): 直接表示这回合你得到的分数。"+"
(一个回合的分数): 表示这回合你获得的分数为前两个有效
分数之和。"D"
(一个回合的分数): 表示这回合你得到的分数为你上一次获得的有效
分数的两倍。"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.游戏的构思 2.算法伪代码的实现 3.算法的实现 1.首先需要建立起游戏的整个框架(棋盘的绘制,地雷的生成,基本函数的实现等) 2.构思AI算法的大概样貌(先尝试写伪码) v ...
- 【游戏中的算法】取火柴游戏算法
文章目录 一.取火柴游戏算法: 二.C/C++实现代码: 1.模拟两个人随机取火柴: 2.电脑随机取火柴,用户输入取火柴: 一.取火柴游戏算法: 取火柴游戏是一个非常简单有趣的小游戏,只要计算好步骤就 ...
- 算法训练 24点游戏
算法训练 24点游戏 1.问题描述 2.输入格式 3.输出格式 4.分析 5.代码 第一版:蓝桥杯版(搜索算法) 后面会出力扣版的24点游戏的代码分析 1.问题描述 问题: 24点游戏是一个非常有意思 ...
- 数据结构和算法(十)递归-迷宫游戏
1. 数据结构和算法(十)递归-迷宫游戏 1.1 迷宫游戏 今天做一个简单的迷宫游戏,用二维数实现地图,让程序自动寻路的小游戏. 1.2 简单的迷宫 简单的迷宫 用二维数实现地图,找路策略:[右- ...
- 前端算法js:跳格子游戏
// 前端算法js:跳格子游戏 let arrFlag, arrNode, stepAll; // 节点遍历状态,节点的相邻启动点数组,是否完成所有步骤 function jumpGame2(num, ...
- 领扣LintCode算法问题答案-83. 落单的数 II
领扣LintCode算法问题答案-83. 落单的数 II 目录 83. 落单的数 II 描述 样例 1: 样例 2: 题解 鸣谢 83. 落单的数 II 描述 给出 3 * n + 1 个非负整数,除 ...
- 领扣LintCode算法问题答案-1438. 较大分组的位置
领扣LintCode算法问题答案-1438. 较大分组的位置 目录 1438. 较大分组的位置 描述 样例 1: 样例 2: 样例 3: 题解 鸣谢 1438. 较大分组的位置 描述 在一个由小写字母 ...
- 领扣LintCode算法问题答案-175. 翻转二叉树
领扣LintCode算法问题答案-175. 翻转二叉树 目录 175. 翻转二叉树 鸣谢 175. 翻转二叉树 翻转一棵二叉树.左右子树交换. 样例 1: 输入: {1,3,#} 输出: {1,#,3 ...
- 【蓝桥杯算法提高VIP-开灯游戏(两种超易理懂解法:暴力/位操作(切换位))(纯正C语言代码)】
蓝桥杯算法提高VIP-开灯游戏 题目描述 有9盏灯与9个开关,编号都是1~9. 每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的). 具体如下: 第一个开关控制第二, ...
- 使用HTML5 canvas和光线投影算法创建伪3D 游戏
为什么80%的码农都做不了架构师?>>> 作者 Jacob Seidelin · 2008年11月28日 本文翻译自 Creating pseudo 3D games with ...
最新文章
- android View.isShown() 和 getVisibility() 的区别
- Ubuntu死机解决方法汇总
- 一个ASP站内搜索的实例源代码
- 奖客富翁系统python_作业 2018-12-28 20.1 奖客富翁
- OpenCV使用FacemarkAAM
- python返回字符串长度的函数_Python如何查找字符串的长度?(代码示例)
- C# 调用动态链接库读取二代身份证信息
- OCP China Day 2021:开放计算十年,以全球协作打破创新边界
- bootstrap datetimepicker、bootstrap datepicker日期组件对范围的简单封装
- Linux 超级漂亮的 Shell
- 纵坐标是横的还是竖的_600*1200墙砖横贴好,还是竖贴好?讲讲这两种贴法的问题...
- Github上关于iOS的各种开源项目集合
- mac 电脑 java wifi密码尝试器
- 我爱淘二次冲刺阶段2
- 常用传感器讲解七--红外警报传感器(KY-008)
- 2个Python学习网站制作教程
- STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记二(2):Cortex-M3处理器内存模型
- Unity3D开发工程师
- 解压chm后由hhc生成html索引页面
- 阿里云王文彬:希望云计算支撑百亿设备