鹤山区网站建设,研究生做网站开发,php做网站需要html,如何将微信和企业网站同步题目#xff1a;你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成#xff0c;过去几回合的得分可能会影响以后几回合的得分。
比赛开始时#xff0c;记录是空白的。你会得到一个记录操作的字符串列表 ops#xff0c;其中 ops[i] 是你需要记录的第 i 项操…题目你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成过去几回合的得分可能会影响以后几回合的得分。
比赛开始时记录是空白的。你会得到一个记录操作的字符串列表 ops其中 ops[i] 是你需要记录的第 i 项操作ops 遵循下述规则
整数 x - 表示本回合新获得分数 x - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。 D - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录此操作时前面总是存在一个有效的分数。 C - 表示前一次得分无效将其从记录中移除。题目数据保证记录此操作时前面总是存在一个有效的分数。 请你返回记录中所有得分的总和。 示例 1
输入ops [5,2,C,D,] 输出30 解释 5 - 记录加 5 记录现在是 [5] 2 - 记录加 2 记录现在是 [5, 2] C - 使前一次得分的记录无效并将其移除记录现在是 [5]. D - 记录加 2 * 5 10 记录现在是 [5, 10]. - 记录加 5 10 15 记录现在是 [5, 10, 15]. 所有得分的总和 5 10 15 30 示例 2
输入ops [5,-2,4,C,D,9,,] 输出27 解释 5 - 记录加 5 记录现在是 [5] -2 - 记录加 -2 记录现在是 [5, -2] 4 - 记录加 4 记录现在是 [5, -2, 4] C - 使前一次得分的记录无效并将其移除记录现在是 [5, -2] D - 记录加 2 * -2 -4 记录现在是 [5, -2, -4] 9 - 记录加 9 记录现在是 [5, -2, -4, 9] - 记录加 -4 9 5 记录现在是 [5, -2, -4, 9, 5] - 记录加 9 5 14 记录现在是 [5, -2, -4, 9, 5, 14] 所有得分的总和 5 -2 -4 9 5 14 27 示例 3
输入ops [1] 输出1
提示
1 ops.length 1000 ops[i] 为 C、D、或者一个表示整数的字符串。整数范围是 [-3 * 104, 3 * 104] 对于 操作题目数据保证记录此操作时前面总是存在两个有效的分数 对于 C 和 D 操作题目数据保证记录此操作时前面总是存在一个有效的分数 题解 “”代表将前两个有效的得分数字相加 例如在第i个检测到“”号那么就将i-1,i-2,相加的值并存入一个新的数组 “D”代表将D前面一个的数字乘2首先保证数组有效 例如在第i个检测到“D”将i-1乘以2 “C”代表将C前面一个的数字无效并从数组中删除 例如在第i个检测到“C”将i-1pop() 以上的操作基本都是在新数组中完成的注意不要对原数组进行操作 通过一个循环和if...else...语句判断原数组中对应的字符所需要的的操作
/*** param {string[]} operations* return {number}*/
var calPoints function(operations) {let sum 0;let newArr [];for (let i 0; i operations.length; i) {if (operations[i] ) {newArr.push(Number(newArr[newArr.length - 1]) Number(newArr[newArr.length - 2]));// console.log(出现了c, newArr);} else if (operations[i] D) {newArr.push(Number(newArr[newArr.length - 1] * 2));// console.log(出现了d, newArr);} else if (operations[i] C) {newArr.pop();// console.log(出现了c, newArr);} else {newArr.push(Number(operations[i]));// console.log(直接添加, newArr);}}//console.log(newArr);for (let i 0; i newArr.length; i) {sum newArr[i];}// console.log(sum);return sum;
};