编程之美---超级水王扩展题目

发布时间:2017-5-29 0:40:19 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"编程之美---超级水王扩展题目",主要涉及到编程之美---超级水王扩展题目方面的内容,对于编程之美---超级水王扩展题目感兴趣的同学可以参考一下。

/** * 一个数组中有N个数字出现的次数都超过数组总长度L的1/(N+1),查找这些ID * */ #include <iostream> #include <cstring> #include <map> #include <algorithm> #include <utility> using namespace std; //数组:arr //长度:size //数字个数:n map<int,int> find(int* arr,int size,size_t n) { map<int,int> candidate; for(int i=0;i<size;++i) { if(candidate.find(arr[i])!=candidate.end()) { ++candidate[arr[i]]; } else if(candidate.size()==n) { for(auto index=candidate.begin();index!=candidate.end();) { --(index->second); if(index->second==0) candidate.erase(index++); //注意这里的写法,否则,index已经失效,将没办法遍历 else ++index; //注意区别 } } else { candidate.insert(make_pair(arr[i],1)); } } return candidate; } int main(int argc,char* argv[]) { int arr[]={1,2,3,5,1,2,3}; map<int,int> candidate=move(find(arr,sizeof(arr)/sizeof(int),3)); for_each(candidate.begin(),candidate.end(), [](const pair<int,int>& val) { cout<<"Val: "<<val.first<<endl; } ); return 0; }

上一篇:PHP分页类
下一篇:GIS数据库系统中OCI的应用

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。