LeetCode--682--棒球比赛(java)
你现在是棒球比赛记录员。
给定一个字符串列表,每个字符串可以是以下四种类型之一:
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之间。
这个在编译器过不了。。。。看第二个
class Solution {
public int calPoints(String[] ops) {
Pattern pattern = Pattern.compile("-?[0-9]+.*[0-9]*");
int len = 0,j=0,sum=0,i=0;
for(i = 0;i<ops.length;i++){
}
for(i = 0;i < ops.length;i++){
if(ops[i] != "C"){
len++;
}else{
len -= 1;
}
}
int[] res= new int[len];
for(i = 0;i < ops.length;i++){
if(pattern.matcher(ops[i]).matches()){
res[j] = Integer.parseInt(ops[i]);
j++;
}else if(ops[i] == "C"){
while(res[j-1]>30000){
j--;
}
res[--j] = 30001;
}else if(ops[i] == "D"){
res[j] = res[j-1]*2;
j++;
}else if(ops[i] == "+"){
res[j] = res[j-1]+res[j-2];
j++;
}
}
for(i = 0;i < res.length;i++){
sum += res[i];
}
return sum;
}
}
2019-03-07 23:21:24
class Solution {
public int calPoints(String[] ops) {
Stack<Integer> stack = new Stack();
for(String s : ops){
if(s.equals("C")){
stack.pop();
}else if(s.equals("+")){
int a = stack.pop();
int b = stack.pop();
stack.push(b);
stack.push(a);
stack.push(a+b);
}else if(s.equals("D")){
stack.push(stack.peek()*2);
}else{
stack.push(Integer.parseInt(s));
}
}
int res=0;
while(!stack.isEmpty()){
res += stack.pop();
}
return res;
}
}
2019-03-08 10:37:08
LeetCode--682--棒球比赛(java)的更多相关文章
- Java实现 LeetCode 682 棒球比赛(暴力)
682. 棒球比赛 你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. "+"(一轮的 ...
- LeetCode:棒球比赛【682】
LeetCode:棒球比赛[682] 题目描述 你现在是棒球比赛记录员.给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数.2. " ...
- 【Leetcode】【简单】【682棒球比赛】【JavaScript】
题目 682. 棒球比赛 你现在是棒球比赛记录员.给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数.2. "+"(一轮的 ...
- [Swift]LeetCode682. 棒球比赛 | Baseball Game
You're now a baseball game point recorder. Given a list of strings, each string can be one of the 4 ...
- LeetCode第[18]题(Java):4Sum 标签:Array
题目难度:Medium 题目: Given an array S of n integers, are there elements a, b, c, and d in S such that a + ...
- LeetCode第[1]题(Java):Two Sum 标签:Array
题目: Given an array of integers, return indices of the two numbers such that they add up to a specifi ...
- LeetCode第[46]题(Java):Permutations(求所有全排列) 含扩展——第[47]题Permutations 2
题目:求所有全排列 难度:Medium 题目内容: Given a collection of distinct integers, return all possible permutations. ...
- LeetCode第[1]题(Java):Two Sum (俩数和为目标数的下标)——EASY
题目: Given an array of integers, return indices of the two numbers such that they add up to a specifi ...
- Leetcode682.Baseball Game棒球比赛
你现在是棒球比赛记录员. 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数. 2. "+"(一轮的得分):表示本轮获得 ...
随机推荐
- Linux 系统/etc/profile 内配置 系统脚本命令
背景 在Linux系统下,我们需要利用脚本命令启动一个进程的时候,需要先找到找到启动文件,然后再启动.比如服务器上安装了一个was应用服务器,我们需要每次启动服务器都需要使用如下命令: sh was ...
- java 动态代理总结
首先:定义一个接口// 只能是一个接口 例: package DongTai; public interface dongtai { public void show(); } 接着:定义一个被代理类 ...
- Android.bp 添加宏开关【转】
本文转载自:https://github.com/zzb2760715357/document/blob/master/android_doc/Android.bp%E6%B7%BB%E5%8A%A0 ...
- linux内核中的DMI是什么?
答: 桌面管理接口(Desktop Management Interface).是用来获取硬件信息的,在内核中有一个配置项CONFIG_DMI用来添加此功能到内核中!
- What is the difference between visibility:hidden and display:none?
What is the difference between visibility:hidden and display:none? 答案1 display:none means that the t ...
- awk - group adjacent rows by identical columns
Liang always brings me interesting quiz questions. Here is one: If i have a table like below: chr1 1 ...
- python 之 条件语句
python 编程语言指定任何非0和非空(null)值为true, 0或者null为false. python 编程中if语句用于控制程序的执行,基本形式为: if 判断条件: 执行语句…… else ...
- Python实现机器学习算法:AdaBoost算法
Python程序 ''' 数据集:Mnist 训练集数量:60000(实际使用:10000) 测试集数量:10000(实际使用:1000) 层数:40 ------------------------ ...
- 转载:mysql存储过程讲解
记录MYSQL存储过程中的关键语法: DELIMITER // 声明语句结束符,用于区分; CEATE PROCEDURE demo_in_parameter(IN p_in int) 声明存储过程 ...
- git切换分支报错:error: pathspec 'origin/XXX' did not match any file(s) known to git
项目上有一个分支test,使用git branch -a看不到该远程分支,直接使用命令git checkout test报错如下: error: pathspec 'origin/test' did ...