首页 > 其他分享 >四数相加|哈希表

四数相加|哈希表

时间:2023-03-31 15:56:59浏览次数:47  
标签:四数 int 相加 iter hashTable 哈希 nums4 result

四数相加

给定四个数组,如果四个数相加,如果和为0那么计数加一,最后输出一共有几个组合使得和为0。这题应用哈希表解决

对应题目454. 四数相加 II

哈希表

使用哈希表,保存前两个数组对应的组合之和。value为两数相之和,如果有相同那么value加一。之和再遍历剩下两个数组之和的组合,再在哈希表里查询对应数值相加是否为零。使用一个变量result计数,如果存在那么result = result + hashTable.value最后返回result。分析复杂度,由于需要遍历两个数组之间的组合,所以时间复杂度为\(O(N^{2})\);对于空间复杂度来说,也需要开辟相应的空间存储,所以也为\(O(N^{2})\)

int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
        unordered_map<int,int> hashTable;
        for(int i = 0;i < nums1.size();i++) {
            for(int j = 0;j < nums2.size();j++) {
                auto iter = hashTable.find(nums1[i] + nums2[j]);
                if(iter != hashTable.end()) {
                    hashTable[nums1[i] + nums2[j]] += 1;
                }else {
                    hashTable[nums1[i] + nums2[j]] = 1;
                }
            }
        }
        int result = 0;
        for(int i = 0;i < nums3.size();i++) {
            for(int j = 0;j < nums4.size();j++) {
                auto iter = hashTable.find(-(nums3[i] + nums4[j]));
                if(iter != hashTable.end()) {
                    result += iter->second;
                }
                /*
                *if(hashTable.count(-(nums3[i] + nums4[j]))){
				*	result += hashTable[-(nums3[i] + nums4[j])];
                *}
                */
            }
        }
        return result;
} 

标签:四数,int,相加,iter,hashTable,哈希,nums4,result
From: https://www.cnblogs.com/Corleone/p/17276506.html

相关文章

  • 0204 字符串相加
    字符串的+操作​ 当+操作中出现字符串时,这个+就是字符串连接符,而不是算术运算符了,会将前后的数据进行拼接,并产生新的字符串。连续加时​ 连续进行+操作时,从左到右逐个执行,只要在前面出现过字符串的+操作,后面即使出现数字相加也会视为字符串相加System.out.println("abc"+tru......
  • 两个链表相加,翻转链表
    将两个链表进行翻转,然后遍历链表进行相加翻转链表:reverseList(head){pre=null;//将遍历到的节点放在这个空节点的前面cur=head;while(cur!=null){temp =......
  • 环形链表|哈希、快慢指针
    环形链表判断一个链表中是否有环,如果有返回环的起始位置。难点有两个,一是判断是否有环,二是找到起始点。这里有两种方法,一种是哈希集,另一种是快慢指针。对应题目142.环......
  • 两数组的交集|哈希集
    两个数组的交集寻找两个数组相同的元素,注意返回元素的唯一性对应题目349.两个数组的交集哈希集合使用两个哈希集合,第一个保存前一个数组的元素,第二个集合遍历第二个......
  • Java数据结构 HashMap 哈希表定义使用
    1.HashMapHashMap是一个散列表,它存储的内容是键值(key-value)映射。其中key和value类型可以相同也就而已不同,根据定义。2.HashMap使用1)定义HashMap<Integer,String>hashmap1......
  • Redis 哈希(Hash)
    Redis哈希(Hash)Redishash是一个string类型的field(字段)和value(值)的映射表,hash特别适合用于存储对象。Redis中每个hash可以存储232-1键值对(40多亿)。实......
  • 解决哈希冲突的方法
    1.开放定址法:线性探测法、平方探测法等。就是哈希冲突后,加上一个便宜,寻找不冲突的位置。ThreadLocal采用这种方法。2.拉链法:哈希冲突后,通过链表解决。HashMap采用这种方法......
  • 2023-03-27 哈希表
    哈希表1哈希表基础以LeetCode387号问题为例/************************************************************@Description:LeetCode387号问题*https://leetcod......
  • 哈希专题总结(上)
    算法训练营第10天,中间因为身体原因落了两天进度,有点赶不上,但也不能着急,该学的还是得先掌握好才可以。(-_-|||)1.力扣242这是我第一次利用哈希表做题,学校教的仅仅是理......
  • 数据结构-哈希表
     哈希表hashtable数据结构dictht是hashtable的数据结构,dictEntry是每个entry元素的数据结构。typedefstructdictht{//指针数组,这个hash的桶dictEntry*......