用栈优化:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <stdio.h> #define MAXN 1000005 double stack[MAXN], temp; int n, top; int main() { while(scanf("%d", &n) != EOF) { top = 0; for(int i = 0; i < n; i++) { scanf("%lf", &temp); if(top == 0) stack[top++] = temp; else if(stack[top - 1] == temp) stack[top++] = temp; else top--; } printf("%.2lf\n", top == 0 ? -1 : stack[top - 1]); } return 0; }
用2个变量代替栈:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <stdio.h> double ans, temp; int n, size; int main() { while(scanf("%d", &n) != EOF) { size = 0; for(int i = 0; i < n; i++) { scanf("%lf", &temp); if(size == 0) ans = temp, size++; else if(ans == temp) size++; else size--; } printf("%.2lf\n", ans); } return 0; }