C语言 | Leetcode C语言题解之第454题四数相加II

题目:

题解:

cpp 复制代码
struct hashTable {
    int key;
    int val;
    UT_hash_handle hh;
};

int fourSumCount(int* A, int ASize, int* B, int BSize, int* C, int CSize, int* D, int DSize) {
    struct hashTable* hashtable = NULL;
    for (int i = 0; i < ASize; ++i) {
        for (int j = 0; j < BSize; ++j) {
            int ikey = A[i] + B[j];
            struct hashTable* tmp;
            HASH_FIND_INT(hashtable, &ikey, tmp);
            if (tmp == NULL) {
                struct hashTable* tmp = malloc(sizeof(struct hashTable));
                tmp->key = ikey, tmp->val = 1;
                HASH_ADD_INT(hashtable, key, tmp);
            } else {
                tmp->val++;
            }
        }
    }
    int ans = 0;
    for (int i = 0; i < CSize; ++i) {
        for (int j = 0; j < DSize; ++j) {
            int ikey = -C[i] - D[j];
            struct hashTable* tmp;
            HASH_FIND_INT(hashtable, &ikey, tmp);
            if (tmp != NULL) {
                ans += tmp->val;
            }
        }
    }
    return ans;
}
相关推荐
fufu031134 分钟前
Linux环境下的C语言编程(四十二)
linux·c语言·算法
埃伊蟹黄面1 小时前
模拟算法思想
c++·算法·leetcode
jianfeng_zhu1 小时前
不带头节点的循环双链表
c语言
啊森要自信1 小时前
【C语言】 C语言文件操作
c语言·开发语言·汇编·stm32·单片机
️停云️2 小时前
C++类型转换、IO流与特殊类的设计
c语言·开发语言·c++
liu****2 小时前
10.排序
c语言·开发语言·数据结构·c++·算法·排序算法
fufu03112 小时前
Linux环境下的C语言编程(三十九)
c语言·数据结构·算法·链表
云qq3 小时前
x86操作系统19——键盘驱动
linux·c语言·汇编
菜鸟233号3 小时前
力扣654 最大二叉树 java实现
java·算法·leetcode
森焱森4 小时前
GD32F4 DSP
linux·c语言·arm开发·驱动开发·嵌入式硬件