题解:
真是一道坑比题
首先,看到n<=50万,排序+输出
然后发现T了,原来只有1M
然后发现出现的次数超过n/2,所以我们可以把没一个数和上一个抵销,剩下的就是
然后发现MLE
后来把include<bits/stdc++.h>改成include<cstdio>就过了
代码:
#include<cstdio> using namespace std; int n,tot,x,last; int main() { scanf("%d",&n); for (int i=1;i<=n;i++) { scanf("%d",&x); if (x==last)tot++; else if (!tot)last=x,tot=1; else tot--; } printf("%d",last); }
博主分享了一道算法题的解决过程,题目要求找出数组中出现次数超过n/2的元素。面对50万的大数据量,博主尝试了排序加输出的方法,但因内存限制失败。最终通过抵销策略和代码优化,成功解决了问题。
510

被折叠的 条评论
为什么被折叠?



