通过万岁!!!
- 题目:题目的大致意思就是给你一个数组,里面有可能是一个具体的数据,有可能是“+”、“D”、“C”等符号。然后让你求这个数组最后的和。但是如果遇到+则表示前面两个数字之和。遇到D表示前面一个数字的两倍。遇到C表示前面一个数字无效。
- 思路:我们可以定义一个新的分数数组,然后里面记录所得分数。便利给定的数组,遇到符号的时候判断下即可。注意这个分数数组的下标需要有一个变量idx,分数数组的最大长度是给定数组的长度。最后我们求分数数组从0到idx的值的和就好了。
- 技巧:模拟
java代码
class Solution {
public int calPoints(String[] operations) {
int length = operations.length;
int[] score = new int[length];
int idx = 0;
for (String item : operations) {
switch (item) {
case "+":
score[idx] = score[idx - 1] + score[idx - 2];
idx++;
break;
case "D":
score[idx] = 2 * score[idx - 1];
idx++;
break;
case "C":
idx--;
break;
default:
score[idx] = Integer.parseInt(item);
idx++;
}
}
int sum = 0;
for (int i = 0; i < idx; i++) {
sum += score[i];
}
return sum;
}
}
- 总结:题目比较简单,没有什么可以总结的。