「 每日一练,快乐水题 」682. 棒球比赛
生活随笔
收集整理的這篇文章主要介紹了
「 每日一练,快乐水题 」682. 棒球比赛
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 🔴力扣原題:
- 🟠題目簡述:
- 🟡解題思路:
- 🟢C++代碼:
- 🔵結果展示:
🔴力扣原題:
力扣鏈接:682. 棒球比賽
🟠題目簡述:
你現在是一場采用特殊賽制棒球比賽的記錄員。這場比賽由若干回合組成,過去幾回合的得分可能會影響以后幾回合的得分。
比賽開始時,記錄是空白的。你會得到一個記錄操作的字符串列表 ops,其中 ops[i] 是你需要記錄的第 i 項操作,ops 遵循下述規則:
整數 x - 表示本回合新獲得分數 x
“+” - 表示本回合新獲得的得分是前兩次得分的總和。題目數據保證記錄此操作時前面總是存在兩個有效的分數。
“D” - 表示本回合新獲得的得分是前一次得分的兩倍。題目數據保證記錄此操作時前面總是存在一個有效的分數。
“C” - 表示前一次得分無效,將其從記錄中移除。題目數據保證記錄此操作時前面總是存在一個有效的分數。
請你返回記錄中所有得分的總和。
🟡解題思路:
1.使用vector進行模擬:主要用到push_back(),pop_back();
2.使用atoi()函數把string轉換到int;
3.把模擬完的數據累加即可;
4.over;
🟢C++代碼:
class Solution { public:int calPoints(vector<string>& ops) {int ret = 0;vector<int> vec;for(auto str : ops){if(str == "+"){vector<int>::iterator it = vec.end();vec.push_back((*(it -1))+(*(it -2)));}else if(str == "D"){vector<int>::iterator it = vec.end();vec.push_back((*(it -1))*2);}else if(str == "C"){vec.pop_back();}else{vec.push_back(atoi(str.c_str()));}}for(auto i : vec){ret += i;}return ret;} };🔵結果展示:
總結
以上是生活随笔為你收集整理的「 每日一练,快乐水题 」682. 棒球比赛的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年中国移动游戏行业深度洞察报告
- 下一篇: 在互联网公司工作是种怎样的体验?