💖 喜欢我的文章,记得点赞👍+评论💬+收藏⭐️+关注😙の,你的反馈就是我不断更新的动力!
题目描述: 点击进入原题
😋解题思路【食用方法】😋
利用数组充当栈,添加一个指针i,用来记录保存的位置,一次遍历即可,整体时间复杂度为O(n)。
解题思路参考自@tuqikang
⭐详细注释代码⭐
class Solution {
public int calPoints(String[] ops) {
//arr用来保存每次的得分,利用数组会相比栈、链表更快
int[] arr = new int[ops.length];
//i用来记录顺序,相当于指针的作用
int i = 0;
//保存总和分数
int sum = 0;
for (String s : ops) {
switch (s) {
//操作为"+"时,在下一个位置保存前2次得分总和,总和也保存,指针++
case "+" : arr[i] = arr[i-1] + arr[i-2]; sum += arr[i]; i++; break;
//操作为"D"时,在下一个位置保存前1次得分2倍,总和也保存,指针++
case "D" : arr[i] = arr[i-1] * 2; sum += arr[i]; i++; break;
//操作为"C"时,先在总和中删除栈顶的分数,再将数组(栈顶)中的最后一个数置0
case "C" : sum -= arr[i-1]; arr[i-1] = 0; i--; break;
//使用parseInt会少一次拆箱,valueof会再调用parseInt拆箱,理论上要更慢一些
//default : arr[i] = Integer.valueOf(s); sum += arr[i]; i++;
//如果是数字,则直接保存即可,指针++
default : arr[i] = Integer.parseInt(s); sum += arr[i]; i++;
}
}
return sum;
}
}
☀️写在最后☀️
靠天靠地靠自己,你不卷就要被卷。
今天不来刷一题,明天面试问懵逼。
来吧,一起卷起来。 💪
感觉得我的注解对你有所帮助那就点个赞吧,比心💖
🌟关注6哥【Newge6】,每天带给你详解注释🌟.