682. Baseball Game
来源:互联网 发布:淘宝店铺里的图片变形 编辑:程序博客网 时间:2024/04/30 04:13
问题描述:给你一个字符串数组,其中包含:数字、C、D、+、四种字符。数字表明你这一局得分,C表明你上一局得分无效,D表明你这句得分是上一局得分两倍,+表明你这一局得分是前两次有效得分之和。C不是有效得分并且会移除一次有效得分。
思路:原打算用两个指针分别记录上一局和上上局得分。但发现遇上连续多个C时,无法追溯之前的得分。题目上的标签为stack。C、D操作确实很像stack。但是+需要pop两次再push进去。再三考虑下,干脆用同样长的int数组记录每局得分,然后再累加好了。
原答案:
public int calPoints(String[] ops) { int length=ops.length; int [] result=new int[length]; int j=-1; String s=""; int totalSum=0; for(int i=0;i<length;i++){ s=ops[i]; if("C".equals(s)){ result[j]=0; j=j-1; }else if("D".equals(s)){ result[j+1]=result[j]*2; j=j+1; }else if("+".equals(s)){ result[j+1]=result[j]+result[j-1]; j=j+1; }else{ result[j+1]=toNum(s); j=j+1; } } for(int i=0;i<length;i++){ totalSum=totalSum+result[i]; } return totalSum; } private int toNum(String s){ return Integer.valueOf(s); }
最佳答案:
public int calPoints(String[] ops) { int sum = 0; int[] valid = new int[ops.length]; int v = -1; for(int i = 0; i < ops.length; i++){ if(ops[i].equals("C")){ sum -= valid[v]; v--; } else if(ops[i].equals("D")){ int d = valid[v] + valid[v]; v++; valid[v] = d; sum += d; } else if(ops[i].equals("+")){ int p = valid[v] + valid[v - 1]; v++; valid[v] = p; sum += p; } else { int val = Integer.parseInt(ops[i]); v++; valid[v] = val; sum += val; } } return sum; }
整体思路基本一致,使用了另一个数组记录得分。不同的是,得分在第一次遍历的时候就能计算出来了,不用再遍历一次了
阅读全文
0 0
- [LeetCode] 682. Baseball Game
- leetcode 682. Baseball Game
- 682. Baseball Game
- <LeetCode>682. Baseball Game
- Leetcode. 682. Baseball Game
- 682. Baseball Game
- 682. Baseball Game
- 【LeetCode】682. Baseball Game
- 682. Baseball Game
- 682. Baseball Game
- 682. Baseball Game(vector..)
- 682. Baseball Game
- 682. Baseball Game
- leetcode 682. Baseball Game
- LWC 51:682. Baseball Game
- LeetCode 682. Baseball Game (Easy)
- Baseball Game
- LeeCode- Baseball Game
- 透彻的掌握 Spring 中@transactional 的使用
- 吴恩达深度学习第一课第四周课后作业1参考
- java--反射
- geohash原理浅析
- 设计模式——状态模式
- 682. Baseball Game
- win10--L2TP教程
- Java中的经典算法之冒泡排序(Bubble Sort)
- 算法爱好者——算法题:加油站 ? 待解决
- python---POST/GET请求数据包,图片验证码自动化识别,pytesseract,模拟用户一次正常登录
- 整体二分(二分进阶)
- webmagic在tomcat上https报错问题
- ES6的资料放送
- 【学术篇】SDOI2008 沙拉公主的困惑