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

发布时间:2016-12-9 23:27:58 编辑: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的应用

相关文章

相关评论