1. 程式人生 > >海量資料查詢重複的數字

海量資料查詢重複的數字

文章目錄

1,vector容器中存放了一些資料,在O(n)時間找到第一個重複的資料
#include<iostream>
#include<vector>
#include<iterator> #include<ctime> #include<set> #include<unordered_set> using namespace std int main() { vector<int>vec; for(int i=0;i<1000;++i) { vec.push_back(rand()%300); } unordered_set<int>set1; for(int i=0;i<vec.size();
++i) { //if(set1.count(vec[i])==0) if(set1.find(vec[i]==set1.end()) { set1.insert(vec[i]); } else { cout<<vec[i]<<"重複了!"<<endl; set1.count(vec[i]); break; } } return 0
; }

結果如下:
在這裡插入圖片描述

2,vector容器中存放了一些資料,在O(n)時間找到重複的資料,列印數字和重複次數
#include<iostream>
#include<vector>
#include<iterator>
#include<ctime>
#include<map>
#include<unordered_map>
using namespace std
    
int main()
{
    vector<int>vec;
    for(int i=0;i<1000;i++)
    {
        vec.push_back(rand()%300);
    }
    unordered_map<int,int>map1;
    for(int i=0;i<vec.size();++i)
    {
        //map1[vec[i]]++;
        unordered_map<int,int>::it=map1.find(map1.find(vec.[i]));
        if(it!=map1.end())
        {
            it->second++;
        }
        else
        {
            map1.insert(make_pair(vec[i],1));
        }
    }
    auto it=map1.begin();
    unordered_map<int,int>::iterator it=map1.begin();
    for(;it!=map1.end();++it)
    {
        cout<<it->first<<" "<<it->second<<endl;
    }
    return 0;
}

結果如下:在這裡插入圖片描述

3,vector容器中存放了一些資料,在O(n)時間找到重複次數最大的三個資料,列印數字和重複次數
#include<iostream>
#include<map>
#include<vector>
#include<iterator>
#include<ctime>
#include<queue>
#include<functional>
#include<unordered_map>
using namespace std

int main()
{
    vector<int>vec;
    for(int i=0;i<1000;++i)
    {
        vec.push_back(rand()%400);
    }
    unordered_map<int,int>map1;
    for(int i=0;i<vec.size();++i)
    {
        //map1[vec[i]]++;
        unordered_map<int,int>::iterator it=map1.find(vec[i]);
        if(it!=map1.end())
        {
            it->second++;
        }
        else
        {
            map1.insert(make_pair(vec[i],1));
        }
    }
    struct Node
    {
        Node(int n=0,int c=0):num(n),count(c){}
        bool operator>(const Node&node)const
        {
            return count>node.count;
        }
        int num;
        int count;
    }
    priority_queue<Node,vector<Node>,greater<Node>>minHeap;
    unordered_map<int,int>::iterator it1=map1.begin();
    for(;it1!=map1.end();it1++)
    {
        if(minHeap.size()<3)
        {
            minHeap.push_back(Node(it1->first,it1->second));
        }
        else
        {
            if(it1->second>minHeap.top().count)
            {
                minHeap.pop();
                minHeap.push(Node(it1->first,it1->second));
            }
        }
    }
    while(!minHeap.empty())
    {
        cout<<minHeap.top().num<<" "<<minHeap.top().count<<endl;
        minHeap.pop();
    }
    return 0;
}

結果為:在這裡插入圖片描述