python--leetcode682. Baseball Game
来源:互联网 发布:拜占庭东罗马知乎 编辑:程序博客网 时间:2024/06/06 00:06
You're now a baseball game point recorder.
Given a list of strings, each string can be one of the 4 following types:
Integer
(one round's score): Directly represents the number of points you get in this round."+"
(one round's score): Represents that the points you get in this round are the sum of the last twovalid
round's points."D"
(one round's score): Represents that the points you get in this round are the doubled data of the lastvalid
round's points."C"
(an operation, which isn't a round's score): Represents the lastvalid
round's points you get were invalid and should be removed.
Each round's operation is permanent and could have an impact on the round before and the round after.
You need to return the sum of the points you could get in all the rounds.
Example 1:
Input: ["5","2","C","D","+"]Output: 30Explanation: Round 1: You could get 5 points. The sum is: 5.Round 2: You could get 2 points. The sum is: 7.Operation 1: The round 2's data was invalid. The sum is: 5. Round 3: You could get 10 points (the round 2's data has been removed). The sum is: 15.Round 4: You could get 5 + 10 = 15 points. The sum is: 30.
Example 2:
Input: ["5","-2","4","C","D","9","+","+"]Output: 27Explanation: Round 1: You could get 5 points. The sum is: 5.Round 2: You could get -2 points. The sum is: 3.Round 3: You could get 4 points. The sum is: 7.Operation 1: The round 3's data is invalid. The sum is: 3. Round 4: You could get -4 points (the round 3's data has been removed). The sum is: -1.Round 5: You could get 9 points. The sum is: 8.Round 6: You could get -4 + 9 = 5 points. The sum is 13.Round 7: You could get 9 + 5 = 14 points. The sum is 27.
这一题的意思看起来比较繁琐,劝同学们好好看看英文原题和example理解一下意思。
意思就是如果输入的列表里某元素是数字的话,就一切正常。如果该元素为“C”,那么上一个数字元素失效。如果该元素为”D”,那么等于输入一个上一个有效数字的两倍的数字。如果该元素为“+”,那么等于输入一个上两个有效数字之和的数字。
解题思路无非就是各种条件去做判断,并设一个辅助数组b来做标记。同样下标若为1说明数字有效,若为0说明无效。
class Solution(object): def calPoints(self, ops): """ :type ops: List[str] :rtype: int """ b=[1 for i in range(len(ops))] for i in range(len(ops)): if ops[i]=="C" : b[i]=0 j=i while b[j]==0: j=j-1 b[j]=0 if ops[i] == "D": j=i-1 while b[j]==0: j=j-1 ops[i]=2*int(ops[j]) if ops[i]=="+": j = i - 1 while b[j] == 0: j = j - 1 k=j-1 while b[k] == 0: k = k - 1 ops[i]=int(ops[j])+int(ops[k]) sum=0 for i in range(len(ops)): if b[i]==1:sum=sum+int(ops[i]) return sums=Solution()s.calPoints(["5","2","9",'C',"+",'D'])因为我之前是写C的,所以语言方面用得比较底层,比较少去调用python的各种包或是列表操作。
下面上一个代码,求和的另一种思路:
def calPoints(self, ops): point_list = [] for op in ops: if op == '+': point_list.append(sum(point_list[-2:])) elif op == 'C': if point_list: del point_list[-1] elif op == 'D': if point_list: point_list.append(point_list[-1] * 2) else: point_list.append(int(op)) return sum(point_list)应该不难看懂,就不讲解了。
阅读全文
1 0
- python--leetcode682. Baseball Game
- LeetCode682. Baseball Game
- Baseball Game
- LeeCode- Baseball Game
- [LeetCode] 682. Baseball Game
- leetcode 682. Baseball Game
- 682. Baseball Game
- <LeetCode>682. Baseball Game
- Leetcode. 682. Baseball Game
- 682. Baseball Game
- 682. Baseball Game
- Baseball Game(leetcode)
- LeetCode.682 Baseball Game
- 【LeetCode】682. Baseball Game
- 682. Baseball Game
- 682. Baseball Game
- 682. Baseball Game(vector..)
- LC-Baseball Game
- Solr Tokenizers分词器介绍
- Java后台框架篇--SpringData
- this is a test
- docker 自建证书 私有 registry 搭建
- XPath+第三节
- python--leetcode682. Baseball Game
- Git服务器搭建
- 【知了堂学习笔记】java中的正则表达式
- 大话线性代数
- 有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,编写如下函数: (1)输入10个学生 的基本信息(input); (2)求出每个学生的平均分(average); (3)求出平均分
- Python 乱码,系统默认编码
- 001-第一个C程序,hello
- Java后台框架篇--使用SpringSocial 连接社交网络
- 一些爱不释手的 Chrome 插件