合并表记录C++

合并表记录

http://www.nowcoder.com/questionTerminal/de044e89123f4a7482bd2b214a685201

用map秒杀

#include<iostream>
#include<map>
using namespace std;
int main()
{
    int n;
    map<int,int> m;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        pair<int,int> tmp;
        cin>>tmp.first;
        cin>>tmp.second;
        if((m.find(tmp.first))!=m.end())
            m[tmp.first]+=tmp.second;
        else
            m[tmp.first]=tmp.second;
    }
    for(auto it=m.begin();it!=m.end();it++)
        cout<<it->first<<" "<<it->second<<endl;
    return 0;
}
全部评论
不用判断是tmp.first是否存在。 当使用m[i] 时,如果map中不存在这个key,map会自动帮你创建一个键值对。 所以在不确定值是否存在且不希望将该值插入时才使用.find()方法。 这里每个值都要插入,直接+=就可以了。
1 回复 分享
发布于 2021-09-04 15:38
map不是有序的,这样输出会不会有问题?
点赞 回复 分享
发布于 2022-05-28 14:50
cin >> tmp.second 时,会不会出问题,相当于tmp[Index] = Value; 了,也就是这一步已经插入值了,但是后面的+= 好像正常执行的
点赞 回复 分享
发布于 2021-03-06 11:08
和我的思路差不多,感觉自己写得有些繁琐了。
点赞 回复 分享
发布于 2022-05-26 18:11

相关推荐

小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
52 2 评论
分享
牛客网
牛客企业服务