通过万岁!!!
- 题目:题目的大致意思就是给你一个数组,里面有可能是一个具体的数据,有可能是“+”、“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;}
}
- 总结:题目比较简单,没有什么可以总结的。