C++刷leetcode(682. 棒球比赛)【数据结构】
本帖最后由 糖逗 于 2020-5-8 17:54 编辑题目描述:
你现在是棒球比赛记录员。
给定一个字符串列表,每个字符串可以是以下四种类型之一:
1.整数(一轮的得分):直接表示您在本轮中获得的积分数。
2. "+"(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。
3. "D"(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。
4. "C"(一个操作,这不是一个回合的分数):表示您获得的最后一个有效 回合的分数是无效的,应该被移除。
每一轮的操作都是永久性的,可能会对前一轮和后一轮产生影响。
你需要返回你在所有回合中得分的总和。
示例 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分(第三轮的数据已被删除)。总和是:-1。
第5轮:你可以得到9分。总数是:8。
第6轮:你可以得到-4 + 9 = 5分。总数是13。
第7轮:你可以得到9 + 5 = 14分。总数是27。
注意:
输入列表的大小将介于1和1000之间。
列表中的每个整数都将介于-30000和30000之间。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/baseball-game
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
int calPoints(vector<string>& ops) {
int res = 0;
stack<int> temp;
for (int i = 0; i < ops.size(); i++) {
if (ops == "+") {
int a = temp.top();
temp.pop();
int b = temp.top();
temp.push(a);
temp.push(a+ b);
} else if (ops == "D") {
int a = temp.top();
temp.push(2 * a);
} else if (ops == "C") {
temp.pop();
} else {
temp.push(stoi(ops));
}
}
while (!temp.empty()) {
res += temp.top();
temp.pop();
}
return res;
}
注意事项:
1.stack中存储的是每一回合的得分,因为“C"(一个操作,这不是一个回合的分数):表示您获得的最后一个有效 回合的分数是无效的,应该被移除”,所以vector完成不了这个操作,只能使用stack。
2.res根据stack中的每一轮得分加总得到最后结果 {:10_335:} 用c++怎么写呢?? 大只婧 发表于 2020-6-14 17:40
用c++怎么写呢??
在上面的基础上加上头文件和main函数就可以,这里的代码是leetcode的模式,leetcode的下已经默认头文件和main函数已经实现了。 糖逗 发表于 2020-6-14 19:17
在上面的基础上加上头文件和main函数就可以,这里的代码是leetcode的模式,leetcode的下已经默认头文件和 ...
可以看看完整的码嘛 糖逗 发表于 2020-6-14 19:17
在上面的基础上加上头文件和main函数就可以,这里的代码是leetcode的模式,leetcode的下已经默认头文件和 ...
可以看看码嘛 大只婧 发表于 2020-6-15 00:54
可以看看码嘛
这个就是码呀,leetcode上面都是这样的。 大只婧 发表于 2020-6-15 00:26
可以看看完整的码嘛
我这边只有实现函数,没有完整码。 大只婧 发表于 2020-6-15 00:54
可以看看码嘛
那我自己试试,谢谢哈
页:
[1]