代码随想录算法练习营第七天-哈希-454. 四数相加II

打印 上一主题 下一主题

主题 967|帖子 967|积分 2901


  • 力扣原题链接:454. 四数相加 II
  • 使用map这个数据结构来保存前两个集合元素和的结果,value的值代表和这个值的出现的次数
  • 使用这个方法,可以让算法复杂度从                                                   n                               4                                            n^4                     n4降落到                                                   n                               2                                            n^2                     n2,效率会大大提高
  1. #include <iostream>
  2. #include <vector>
  3. #include <unordered_map>
  4. class Solution {
  5. public:
  6.     int fourSumCount(std::vector<int>& nums1, std::vector<int>& nums2, std::vector<int>& nums3, std::vector<int>& nums4) {
  7.         std::unordered_map<int, int> twoNumSums;
  8.         for (auto n1: nums1)
  9.             for (auto n2: nums2)
  10.                 twoNumSums[n1 + n2]++;
  11.         int count = 0;
  12.         for (auto n3: nums3)
  13.             for (auto n4: nums4) {
  14.                 if (twoNumSums.find(0 - n3 - n4) != twoNumSums.end())
  15.                     count += twoNumSums[0 - n3 - n4];
  16.             }
  17.         return count;
  18.     }
  19. };
  20. int main()
  21. {
  22.     std::vector<int> num1 {1, 2};
  23.     std::vector<int> num2 {-2, -1};
  24.     std::vector<int> num3 {-1, 2};
  25.     std::vector<int> num4 {0, 2};
  26.     Solution s;
  27.     std::cout << s.fourSumCount(num1, num2, num3, num4) << std::endl;
  28.     return 0;
  29. }
复制代码


  • 汇总

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

笑看天下无敌手

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表