首页 > 其他分享 >代码随想录:四数相加 II

代码随想录:四数相加 II

时间:2024-11-26 22:22:03浏览次数:3  
标签:四数 num1 int 随想录 II vector unordered

代码随想录:四数相加 II

我还以为会有更快的速度呢。。没想到最佳答案就是n^2

不过值得一提的,这题一开始可能会想到用multiset来解决重复出现的元素,但实际上,multiset的查询速度是logn,是不如用哈希表的,所以用unordered_map,用键值对的值来表示元素出现的次数。

class Solution {
public:
    int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3,
                     vector<int>& nums4) {
        unordered_map<int, int> a;
        unordered_map<int, int> b;

        int count = 0;

        for (int num1 : nums1) {
            for (int num2 : nums2) {
                auto it = a.find(num1 + num2);
                if (it == a.end()) {
                    a.insert(make_pair(num1 + num2, 1));
                } else {
                    it->second++;
                }
            }
        }

        for (int num3 : nums3) {
            for (int num4 : nums4) {
                int sum = num3+num4;
                auto it = a.find(-sum);
                if(it!=a.end()){
                    count+=it->second;
                }
            }
        }

        return count;
    }
};

标签:四数,num1,int,随想录,II,vector,unordered
From: https://www.cnblogs.com/huigugu/p/18571100

相关文章

  • 代码随想录算法训练营day58| 117.软件构建 47.参加科学大会
    学习资料:https://www.programmercarl.com/kamacoder/0117.软件构建.html#拓扑排序的背景图论拓扑排序:收集入度为0的节点,删掉该节点后其他节点的入度可能变化,记得更新,然后继续删除入度为0的点,直到没有。整个过程的顺序就对应了有向图dijkstra算法:类似prim,也是贪心,找距离源点最近......
  • 代码随想录算法训练营第十一天(LeetCode150.逆波兰表达式求值;LeetCode239.滑动窗口最大
    LeetCode150.逆波兰表达式求值题目链接:逆波兰表达式求值题目链接思路主要是要理解逆波兰表达式的定义,在理解了逆波兰表达式的定义后,使用栈就可以直接做了。逆波兰表达式是一种后缀表达式,所谓后缀就是指运算符写在后面。平常使用的算式则是一种中缀表达式,如(1+2)......
  • 代码随想录算法训练营第十天(LeetCode232.用栈实现队列;LeetCode225.用队列实现栈;LeetCo
    LeetCode232.用栈实现队列题目链接:用栈实现队列题目链接思路队列是先进先出,栈是先进后出,为了能够让栈可以模拟队列的先进先出,我们设置两个栈,一个栈作为入栈,一个栈作为出栈,我们在入栈存储完数据后,将入栈中的数据全部存储到出栈中,那么从出栈中弹出来的数据就是先进先出的......
  • 代码随想录——26、二叉(搜索)树的最近公共祖先
    递归最近公共祖先定义:设节点root为节点p,q的某公共祖先,若其左子节点root.left和右子节点root.right都不是p,q的公共祖先,则称root是“最近的公共祖先”。若root是p,q的最近公共祖先,则只可能为以下情况之一如果p和q在节点root的两侧,那么root就是最近公共祖先p......
  • LeetCode【0227】基本计算器 II
    本文目录1中文题目2Python求解2.1求解思路2.2涉及方法2.3求解示例2.4Python代码2.5复杂度分析3题目总结1中文题目给定一个字符串表达式s,请实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。可以假设给定的表达式总是有效的。所有中间结......
  • 代码随想录算法训练营day55 day57| 108.冗余连接 109.冗余连接II 53.寻宝
    学习资料:https://www.programmercarl.com/kamacoder/0108.冗余连接.html#思路图论并查集prim算法kruskal算法学习记录:108.冗余连接点击查看代码#并查集解法classUnionFind:def__init__(self,size):self.parent=list(range(size+1))deffind(se......
  • 代码随想录算法训练营第十二天|二叉树理论基础|二叉树的递归遍历|二叉树的迭代遍历|二
    二叉树的理论基础二叉树的主要形式:        二叉树有两种主要的形式:满二叉树和完全二叉树;    满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。可以说深度为k,有2^k-1个节点的二叉树。       ......
  • 代码随想录之滑动窗口、螺旋矩阵、区间和、开发商土地;Java之数据结构、集合源码、File
    代码随想录滑动窗口1、如果给两个字符串s和t,判断t是否为s的子串或是否s包含t的排列,用t的长度固定滑动窗口的大小,初始化将s的前t.length()个长度的字符情况存储在int数组中,int数组的大小由字符串中字符的类型决定,最大为ascii表的长度,为128。  每次循环滑动窗口向前移一位,即lef......
  • Java项目实战II基于SPringBoot的玩具销售商城管理系统(开发文档+数据库+源码)
    目录一、前言二、技术介绍三、系统实现四、核心代码五、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言随着儿童娱乐与教育需求的日益增长,玩具市场呈现出蓬勃......
  • 代码随想录:快乐数
    代码随想录:快乐数这题主要是学习一下几种set怎么用。三种set,第一种第二种都是有序的,注意这个序列和插入序列无关,只和插入元素本身有关。第三种哈希表,无序,如果只需要找元素是否出现过,用第三种刚刚好。集合底层实现是否有序数值是否可以重复能否更改数值查询效率增删效......