题目:
解题思路:
遍历操作数组,用栈来存储每次的分数。
- operations[i] = +, ans 加上栈顶两数,并将两数之和压栈。
- operations[i] = D,ans 加上栈顶的两倍,并将数压栈。
- operations[i] = C,ans 减去栈顶,并弹栈。
- operations[i] 是数字,ans 加上数字,并将数字压栈。
int calPoints(char** operations, int operationsSize) {
int ans = 0;
int *point = (int*)malloc(sizeof(int) * operationsSize);
int pos = 0;
for (int i = 0; i < operationsSize; i++) {
switch(operations[i][0]) {
case '+':
ans += point[pos-1] + point[pos-2];
point[pos++] = point[pos-1] + point[pos-2];
break;
case 'D':
ans += point[pos-1] * 2;
point[pos++] = point[pos-1] * 2;
break;
case 'C':
ans -= point[pos-1];
pos--;
break;
default:
ans += atoi(operations[i]);
point[pos++] = atoi(operations[i]);
break;
}
}
free(point);
return ans;
}