题目如下:
思路:可以用散列来写 值得注意的是他的下标有10^9 如果我们用一般的数组 array vector 肯定会超时
毕竟你申请了人家那么大的空间对嘛
这里可以使用map容器
代码如下:
#include<cstdio> #include<iostream> #include<map> using namespace std; int main(){ int ans[1001]; int n,m,flag,x,y; cin>>n>>m; for(int i=0;i<n;i++){ cin>>ans[i]; } while(m--) { map<int,int>b; int maxn=-1,card=1999; cin>>flag>>x>>y; if(!flag){ for(int i=x-1;i<y;i++) { b[ans[i]]++; if(b[ans[i]]>maxn){ maxn=b[ans[i]]; card=ans[i] ; } else if(b[ans[i]]==maxn) { if(card>ans[i]) card=ans[i]; } } cout<<card<<endl; } else ans[x-1]=y; } return 0; }