mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-07 07:35:35 +08:00
Merge pull request #2429 from qiuzidian/master
更新了 0454.四数相加II.md c语言版本解法
This commit is contained in:
@ -412,6 +412,75 @@ public int FourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
|
||||
return res;
|
||||
}
|
||||
```
|
||||
### C:
|
||||
|
||||
```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];
|
||||
for (int i = 0; i < HASH_SIZE; i++) {
|
||||
hashmap[i] = malloc(sizeof(node));
|
||||
hashmap[i]->next = NULL;
|
||||
}
|
||||
|
||||
// 统计两个数组元素之和的负值和出现的次数,放到哈希表中
|
||||
int count = 0, num;
|
||||
for (int i = 0; i < nums1Size; i++) {
|
||||
for(int j = 0; j < nums2Size; j++) {
|
||||
num = - nums1[i] - nums2[j];
|
||||
hash_insert(hashmap, num);
|
||||
}
|
||||
}
|
||||
|
||||
// 统计另外两个数组元素之和,查找哈希表中对应元素的出现次数,加入总次数
|
||||
for (int i = 0; i < nums3Size; i++) {
|
||||
for(int j = 0; j < nums4Size; j++) {
|
||||
num = nums3[i] + nums4[j];
|
||||
count += hash_search(hashmap, num);
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
```
|
||||
<p align="center">
|
||||
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
|
||||
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
|
||||
|
Reference in New Issue
Block a user