LeetCode 682.野球の試合(python)
1858 ワード
タイトルリンク
あなたは今野球の記録員です.文字列のリストを指定します.各文字列は、次の4つのタイプのいずれかです.1.整数(1ラウンドの得点):本ラウンドで得たポイント数を直接表します.2.「+」(1ラウンドの得点):本ラウンドで獲得した得点が前の2ラウンドの有効ラウンドの得点の合計であることを示す.3.「D」(1ラウンドの得点):本ラウンドで獲得した得点が前ラウンドの有効ラウンドの得点の2倍であることを示す.4.「C」(1ラウンドのスコアではない操作):最後の有効ラウンドのスコアが無効であることを示し、削除されるべきである.
各ラウンドの操作は永久的であり、前のラウンドと後のラウンドに影響を与える可能性がある.すべてのラウンドで得点した合計を返す必要があります.
例1:
入力:["5","2","C","D","+"]出力:30解釈:第1ラウンド:5点を得ることができます.合計は:5です.第2ラウンド:2点を得ることができます.合計は:7です.操作1:第2ラウンドのデータが無効です.合計は:5です.第3ラウンド:10点を得ることができます(第2ラウンドのデータは削除されました).合計は:15です.第4ラウンド:5+10=15点を得ることができます.合計は:30です.例2:
入力:["5","-2","4","C","D","9","+","+"]出力:27解釈:第1ラウンド:5点を得ることができます.合計は:5です.第2ラウンド:あなたは-2点を得ることができます.合計は:3です.第3ラウンド:4点を得ることができます.合計は:7です.操作1:第3ラウンドのデータが無効です.合計は:3です.第4ラウンド:-4点を得ることができます(第3ラウンドのデータは削除されました).合計は-1です.第5ラウンド:9点を得ることができます.合計は:8です.第6ラウンド:-4+9=5点を得ることができます.総数は13です.第7ラウンド:9+5=14点を得ることができます.総数は27です.注意:
入力リストのサイズは1~1000です.リストの各整数は-3000~30000です.
問題を解く構想:スタックで問題を解決して、res[]はすべてのステップの現在の得点を保存するため、すべてのステップがすべて総得点を計算する必要がなくて、最後にresに対して和を求めることができます
あなたは今野球の記録員です.文字列のリストを指定します.各文字列は、次の4つのタイプのいずれかです.1.整数(1ラウンドの得点):本ラウンドで得たポイント数を直接表します.2.「+」(1ラウンドの得点):本ラウンドで獲得した得点が前の2ラウンドの有効ラウンドの得点の合計であることを示す.3.「D」(1ラウンドの得点):本ラウンドで獲得した得点が前ラウンドの有効ラウンドの得点の2倍であることを示す.4.「C」(1ラウンドのスコアではない操作):最後の有効ラウンドのスコアが無効であることを示し、削除されるべきである.
各ラウンドの操作は永久的であり、前のラウンドと後のラウンドに影響を与える可能性がある.すべてのラウンドで得点した合計を返す必要があります.
例1:
入力:["5","2","C","D","+"]出力:30解釈:第1ラウンド:5点を得ることができます.合計は:5です.第2ラウンド:2点を得ることができます.合計は:7です.操作1:第2ラウンドのデータが無効です.合計は:5です.第3ラウンド:10点を得ることができます(第2ラウンドのデータは削除されました).合計は:15です.第4ラウンド:5+10=15点を得ることができます.合計は:30です.例2:
入力:["5","-2","4","C","D","9","+","+"]出力:27解釈:第1ラウンド:5点を得ることができます.合計は:5です.第2ラウンド:あなたは-2点を得ることができます.合計は:3です.第3ラウンド:4点を得ることができます.合計は:7です.操作1:第3ラウンドのデータが無効です.合計は:3です.第4ラウンド:-4点を得ることができます(第3ラウンドのデータは削除されました).合計は-1です.第5ラウンド:9点を得ることができます.合計は:8です.第6ラウンド:-4+9=5点を得ることができます.総数は13です.第7ラウンド:9+5=14点を得ることができます.総数は27です.注意:
入力リストのサイズは1~1000です.リストの各整数は-3000~30000です.
問題を解く構想:スタックで問題を解決して、res[]はすべてのステップの現在の得点を保存するため、すべてのステップがすべて総得点を計算する必要がなくて、最後にresに対して和を求めることができます
class Solution:
def calPoints(self, ops: List[str]) -> int:
res=[]#
sum=0 #
res.append(ops[0])
sum=sum+int(res[-1])
for i in range(1,len(ops)):
if ops[i]=='+':
res.append(int(res[-1])+int(res[-2]))#
sum=sum+int(res[-1])
elif ops[i]=='D':
res.append(int(res[-1])*2)#
sum=sum+int(res[-1])
elif ops[i]=='C':
sum=sum-int(res[-1])#
res.pop()
else :
res.append(ops[i])#
sum=sum+int(res[-1])
return sum