本文主要是介绍Leetcode454四数相加II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考链接:代码随想录:Leetcode454四数相加II
解法1:听了代码随想录之后自己YY出来的解法(200+ms),有点慢
class Solution {
public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {int i=0,j=0,k=0,l=0,ans=0;unordered_map<int,int> umap1,umap2;for(const auto& item1:nums1){for(const auto& item2:nums2){umap1[item1+item2]++;}}for(const auto& item3:nums3){for(const auto& item4:nums4){umap2[-item3-item4]++;}}for(const auto& item1:umap1){for(const auto& item2:umap2){if(item1.first==item2.first){ans+=(item1.second*item2.second);}}}return ans;}
};
解法2:代码随想录的解法(170+ms),快了一点
class Solution {
class Solution {
public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {int ans=0;unordered_map<int,int> umap1;for(const auto& item1:nums1){for(const auto& item2:nums2){umap1[item1+item2]++;}}for(const auto& item3:nums3){for(const auto& item4:nums4){if(umap1.count(0-item3-item4)){ans+=umap1[(0-item3-item4)];//这里不能写ans+=umap1.count(0-item3-item4)}}}return ans;}
};
这篇关于Leetcode454四数相加II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!