Update 0454.四数相加II.md,规范代码格式

This commit is contained in:
qiuzidian
2024-01-29 22:08:52 +08:00
committed by GitHub
parent 8b35191534
commit 2f2e6856db

View File

@ -418,20 +418,19 @@ public int FourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
// 哈希表大小 // 哈希表大小
const int HASH_SIZE = 101; const int HASH_SIZE = 101;
typedef struct node typedef struct node {
{
int val; int val;
int count; int count;
struct node *next; struct node *next;
}node, *HashMap; } node, *HashMap;
// 哈希表插入 // 哈希表插入
void hash_insert(HashMap hashmap[], int val){ void hash_insert(HashMap hashmap[], int val) {
int idx = val < 0 ? (-val) % HASH_SIZE : val % HASH_SIZE, count = 0; int idx = val < 0 ? (-val) % HASH_SIZE : val % HASH_SIZE, count = 0;
node *p = hashmap[idx]; node *p = hashmap[idx];
while (p->next != NULL) { while (p->next != NULL) {
p = p->next; p = p->next;
if (p->val == val){ if (p->val == val) {
(p->count)++; (p->count)++;
return; return;
} }
@ -445,10 +444,10 @@ void hash_insert(HashMap hashmap[], int val){
} }
// 哈希表查找 // 哈希表查找
int hash_search(HashMap hashmap[], int val){ int hash_search(HashMap hashmap[], int val) {
int idx = val < 0 ? (-val) % HASH_SIZE : val % HASH_SIZE; int idx = val < 0 ? (-val) % HASH_SIZE : val % HASH_SIZE;
node *p = hashmap[idx]; node *p = hashmap[idx];
while (p->next != NULL){ while (p->next != NULL) {
p = p->next; p = p->next;
if (p->val == val) return p->count; if (p->val == val) return p->count;
} }
@ -458,23 +457,23 @@ int hash_search(HashMap hashmap[], int val){
int fourSumCount(int* nums1, int nums1Size, int* nums2, int nums2Size, int* nums3, int nums3Size, int* nums4, int nums4Size){ int fourSumCount(int* nums1, int nums1Size, int* nums2, int nums2Size, int* nums3, int nums3Size, int* nums4, int nums4Size){
// 初始化哈希表 // 初始化哈希表
HashMap hashmap[HASH_SIZE]; HashMap hashmap[HASH_SIZE];
for (int i = 0; i < HASH_SIZE; i++){ for (int i = 0; i < HASH_SIZE; i++) {
hashmap[i] = malloc(sizeof(node)); hashmap[i] = malloc(sizeof(node));
hashmap[i]->next = NULL; hashmap[i]->next = NULL;
} }
// 统计两个数组元素之和的负值和出现的次数,放到哈希表中 // 统计两个数组元素之和的负值和出现的次数,放到哈希表中
int count = 0, num; int count = 0, num;
for (int i=0; i<nums1Size; i++){ for (int i = 0; i < nums1Size; i++) {
for(int j=0; j<nums2Size; j++){ for(int j = 0; j < nums2Size; j++) {
num = - nums1[i] - nums2[j]; num = - nums1[i] - nums2[j];
hash_insert(hashmap, num); hash_insert(hashmap, num);
} }
} }
// 统计另外两个数组元素之和,查找哈希表中对应元素的出现次数,加入总次数 // 统计另外两个数组元素之和,查找哈希表中对应元素的出现次数,加入总次数
for (int i=0; i<nums3Size; i++){ for (int i = 0; i < nums3Size; i++) {
for(int j=0; j<nums4Size; j++){ for(int j = 0; j < nums4Size; j++) {
num = nums3[i] + nums4[j]; num = nums3[i] + nums4[j];
count += hash_search(hashmap, num); count += hash_search(hashmap, num);
} }