消除重复元素

来源:互联网 发布:正版办公软件 编辑:程序博客网 时间:2024/06/05 03:26

网易实习生笔试题

Question

小易有一个长度为n序列,小易想移除掉里面的重复元素,但是小易想是对于每种元素保留最后出现的那个。小易遇到了困难,希望你来帮助他。
输入描述:
输入包括两行:
第一行为序列长度n(1 ≤ n ≤ 50)
第二行为n个数sequence[i](1 ≤ sequence[i] ≤ 1000),以空格分隔

输出描述:
输出消除重复元素之后的序列,以空格分隔,行末无空格

输入例子:
9
100 100 100 99 99 99 100 100 100

输出例子:
99 100

Algorithm

哈希表

Accepted Code

#include<iostream>#include<vector>#include<unordered_map>using namespace std;int main(){    int n;    cin>>n;    vector<int> vec(0,n);    unordered_map<int,int> hash;    for(int i=0;i<n;i++){        int tmp;        cin>>tmp;        vec.push_back(tmp);        hash[tmp]++;    }    bool flag=false;    for(int i=0;i<n;i++){        if(hash[vec[i]]==1){            if(flag==false){                cout<<vec[i];                flag=true;            }            else{                cout<<" "<<vec[i];            }            hash[vec[i]]=0;        }        else            hash[vec[i]]--;    }    return 0;}
0 0
原创粉丝点击