海量数据处理(查重,topk)
文章目录 查重问题 哈希表 示例问题:找第一个重复的数字 统计数字及其出现的次数可以使用无序映射表 求top k 对内存有限制的大数据处理 查重问题 查重:就是在一组海量数据中,查找重复的数据,一般的解题思路就是 哈希表 哈希表 名称 特点 unordered_set 单重集合,只存放key,不允许key重复 unordered_multiset 多重集合,只存放key,允许key重复 unordered_map 单重映射表,存放[key, value]键值对,不允许key重复 unordered_multimap 多重映射表,存放[key, value]键值对,允许key重复 示例问题:找第一个重复的数字 int main ( ) { vector < int > vec ; //将要查找的数据放在vec中 for ( int i = 0 ; i < 200000 ; ++ i ) { vec . push_back ( rand ( ) ) ; } // 用哈希表解决查重,因为只查重,所以用无序集合解决该问题 unordered_set < int > hashSet ; for ( int val : vec ) { // 在哈希表中查找val auto it = hashSet . find ( val ) ; if ( it != hashSet . end ( ) )