ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

哈希表之练习【4】

2022-03-02 17:05:45  阅读:148  来源: 互联网

标签:int ++ 练习 sum2 sum1 表之 vector 哈希 numcount


学习安排根据《代码随想录》~leetcode454

思路是有的,就类似于两个数组在哈希表里面找相反数题型一样,就是多了数组个数。

可能之前写的题目有些遗忘了,一直想着用multiset去做,为了避免重复的,找到后就删掉,为了防止还可能遇到相同的数,删完了再加回来。因此写完的代码严重超时。

最后还是看了答案,看来是自己陷入了set的沼泽了,用map处理会简单很多。

class Solution {
public:
    int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) 
    {
        int sum1=0;
        int sum2=0;
        int numcount=0;
        unordered_map<int,int>s;
        for(int u:nums1)
        {
            for(int v:nums2)
            {
                sum1=v;
                sum1+=u;
                s[sum1]++;
            }
        }
        for(int i:nums3)
        {
            for(int j:nums4)
            {
                sum2=j;
                sum2+=i;
                if(s.find(-sum2)!=s.end())
                {
                    numcount+=s[-sum2];
                }

            }
        }
        return numcount;
    }
};

虽然最后自己也写出来了,过程中 s[sum1]++;这一步我一度没理解,后来才醒悟,map【key】=value,而此时的value为次数,即遇到相同的,次数就增加。

但是,个人还是不能理解,s[sum1]++这种写法可以给map 添加值了吗,不应该是make_pair(key,value)之类的吗?

写完再想想,可能之前学过的一些东西忘记了~

标签:int,++,练习,sum2,sum1,表之,vector,哈希,numcount
来源: https://blog.csdn.net/qq_57328462/article/details/123234569

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有