描述:
数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。
提示:
0 <= index <= 11111111
1 <= value <= 100000
输入描述:
先输入键值对的个数n(1 <= n <= 500),接下来n行每行输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)
示例:
4
0 1
0 2
1 2
3 4
代码
#include <iostream>
#include <unordered_map> //哈希表头文件
#include <vector> //数组升级版,这里用于排序
#include <algorithm>//通过迭代器进行操作的,这里翻转
using namespace std;
int main() {
int n=0;
cin>>n;
unordered_map<int, int> hash;
vector<int> key;
while(n--){
int k,v;
cin>>k>>v;
key.push_back(k);//有重复数据
hash[k]+=v;
}
//去重
sort(key.begin(),key.end());
key.erase(unique(key.begin(),key.end()),key.end());
for(auto x:key)
cout<<x<<" "<<hash[x]<<endl;
}
// 64 位输出请用 printf("%lld")
知识点:哈希表,动态数组