当前位置: 首页 > news >正文

代码随想录一刷——454.四数相加II

我们现在前2个数组中,统计元素之和以及出现的次数(用map),随后再另外2个数组中遍历看上面元素之和的相反数是否存在于map中即可。

C++:

class Solution {

public:

    int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4)

    {

        int count = 0;

        unordered_map<int,int> umap;

        for(int a:nums1)

            {

            for(int b:nums2)

            {

                umap[a+b]++;

            }

            }

        for(int c:nums3)

        {

            for(int d:nums4)

            {

                int target = 0 - (c+d);

                if(umap.find(target)!=umap.end())

                    count+=umap[target];

            }

        }

        return count;

    }

};

Python:

字典

class Solution(object):

    def fourSumCount(self, nums1, nums2, nums3, nums4):

        """

        :type nums1: List[int]

        :type nums2: List[int]

        :type nums3: List[int]

        :type nums4: List[int]

        :rtype: int

        """

        """

        hashmap = dict()

        count = 0

        for n1 in nums1:

            for n2 in nums2:

                hashmap[n1+n2] = hashmap.get(n1+n2,0)+1

       

        for n3 in nums3:

            for n4 in nums4:

                key = -n3 -n4

                if key in hashmap:

                    count += hashmap[key]

       

        return count

        """

        from collections import defaultdict

        result,cnt = defaultdict(lambda:0),0

        for n1 in nums1:

            for n2 in nums2:

                result[n1+n2] +=1

       

        for n3 in nums3:

            for n4 in nums4:

                cnt += result.get(-n3-n4,0)

       

        return cnt

       

C:

// 哈希表大小

const int HASH_SIZE = 101;

typedef struct node {

    int val;

    int count;

    struct node *next;

} node, *HashMap;

// 哈希表插入

void hash_insert(HashMap hashmap[], int val) {

    int idx = val < 0 ? (-val) % HASH_SIZE : val % HASH_SIZE, count = 0;

    node *p = hashmap[idx];

    while (p->next != NULL) {

        p = p->next;

        if (p->val == val) {

            (p->count)++;

            return;

        }

    }

    node *new = malloc(sizeof(node));

    new->val = val;

    new->count = 1;

    new->next = NULL;

    p->next = new;

    return;

}

// 哈希表查找

int hash_search(HashMap hashmap[], int val) {

    int idx = val < 0 ? (-val) % HASH_SIZE : val % HASH_SIZE;

    node *p = hashmap[idx];

    while (p->next != NULL) {

        p = p->next;

        if (p->val == val) return p->count;

    }

    return 0;

}

int fourSumCount(int* nums1, int nums1Size, int* nums2, int nums2Size, int* nums3, int nums3Size, int* nums4, int nums4Size)

{

    // 初始化哈希表

    HashMap hashmap[HASH_SIZE];

    int sum = 0;

    int target = 0;

    int cnt = 0;

    for(int i = 0;i < HASH_SIZE;i++)

    {

        hashmap[i] = malloc(sizeof(node));

        hashmap[i]->next = NULL;

    }

    for(int i=0;i<nums1Size;i++)

    {

        for(int j=0;j<nums2Size;j++)

        {

            sum = nums1[i]+nums2[j];

            hash_insert(hashmap,sum);

        }

    }

    for(int i=0;i<nums3Size;i++)

    {

        for(int j = 0;j<nums4Size;j++)

        {

            target = -nums3[i]-nums4[j];

            cnt += hash_search(hashmap,target);

        }

    }

    return cnt;

   

}


http://www.mrgr.cn/news/66458.html

相关文章:

  • 这个开源项目牛逼,集成了多款短信通道,让发送短信变的更简单!(带私活源码)
  • 论文翻译:ICLR 2024.DETECTING PRETRAINING DATA FROM LARGE LANGUAGE MODELS
  • 为什么 Allow 配合 meta noindex 比使用Disallow好?
  • sicp每日一题[2.70]
  • 串的定义和基本操作
  • el-date-picker日期选择器动态设置日期
  • Jest进阶知识:测试快照 - 确保组件渲染输出正确
  • 2024年专业的10款数据恢复工具你都用过哪些?
  • 鸿蒙应用开发:下载功能
  • 【020】基于51单片机病房呼叫系统
  • 105. UE5 GAS RPG 搭建主菜单
  • Qt 环境实现视频和音频播放
  • 负载均衡与容错的基本原则
  • C#-类:索引器
  • 【xml转JSON】
  • windows_worm
  • 信号与噪声分析——第三节:随机过程的统计特征
  • 对于IIC的理解
  • 蓝桥杯2021年题解(IP补充)
  • QStackedWidget使用实例
  • Java 基于SpringBoot+Vue 的公交智能化系统,附源码、文档
  • 【C++篇】在秩序与混沌的交响乐中: STL之map容器的哲学探寻
  • 一些常规IP核功能
  • HOT100_最大子数组和
  • 一款功能强大的开源文档管理系统,将物理文档转换为可搜索的在线档案,实现无纸化办公工具(带私活源码)
  • Spring Data Redis的基本使用