iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 2
0
自我挑戰組

1天1題LEETCODE題目系列 第 2

Python 新手挑戰Leetcode 682.題 [Baseball Game]

  • 分享至 

  • xImage
  •  

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 two valid round's points.
"D" (one round's score): Represents that the points you get in this round are the doubled data of the last valid round's points.
"C" (an operation, which isn't a round's score): Represents the last valid 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: 30
Explanation:
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: 27
Explanation:
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.
Note:
The size of the input list will be between 1 and 1000.
Every integer represented in the list will be between -30000 and 30000.

這一題用到的語法很簡單, 只有pop 跟append.
以下是我寫的方法 謝謝觀看 有問題可以發問

解答
class Solution:
def calPoints(self, ops):
"""
:type ops: List[str]
:rtype: int
"""

    a=[]
    round=0
    for i in range(len(ops)):
        if ops[i]=="C":#這步驟遇到C把上一個分數取消, 所以就把他POP出陣列棄掉
            a.pop()
        elif ops[i] == 'D':#這步驟遇到D就把上一個分數雙倍再進入陣列
            a.append(int(a[round - 1]) * 2)
        elif ops[i] == '+':
            a.append(int(a[round - 1] + int(a[round - 2])))#這一步把上一個跟上上一個的分數加起來再放進陣列
        else:
            a.append(int(ops[i]))#數字就進入陣列
    return sum(a)#最後把陣列內的分數加起來

https://leetcode.com/problems/baseball-game/description/


上一篇
Python 新手挑戰Leetcode 709.題 [To Lower Case]
下一篇
Python 新手挑戰Leetcode 500.題 [Keyboard Row]
系列文
1天1題LEETCODE題目4
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言