题解 | #合并表记录#
合并表记录
https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201
#include <iostream>
#include <unordered_map>
#include <algorithm>
#include <vector>
using namespace std;
bool cmp(vector<int>&a, vector<int>&b)
{
return a[0]<b[0];
}
int main() {
int n;
unordered_map<int, int> dat;
cin>>n;
for(int i=0; i<n; ++i)
{
int k,v;
cin>>k>>v;
dat[k] +=v;
}
int m = dat.size();
vector<vector<int>> ans(m, vector<int>(2));
int ind = 0;
// for(auto& kv:dat)
// {
// // cout<<kv.first<<" "<<kv.second<<endl;
// ans[ind][0]=kv.first;
// ans[ind][1]=kv.second;
// ind++;
// }
// 两种遍历哈希map的方式 记住
for(auto [k, v]:dat)
{
// cout<<k<<" "<<v<<endl;
ans[ind][0]=k;
ans[ind][1]=v;
ind++;
}
//排序
sort(ans.begin(), ans.end(), cmp);
// 输出
for(int i=0; i<m; ++i)
{
cout<<ans[i][0]<<" "<<ans[i][1]<<endl;
}
}
// 64 位输出请用 printf("%lld")

