二进制哈希映射到底是如何工作的?如何,它如何仅将binMap[elements in arr]
初始化为1
,其余为0
?
#include <stdio.h>
#define MAX 100000
void printPairs(int arr[], int arr_size, int sum)
{
int i, temp;
bool binMap[MAX] = {0}; /*initialize hash map as 0*/
for(i = 0; i < arr_size; i++)
{
temp = sum - arr[i];
if(temp >= 0 && binMap[temp] == 1)
{
printf("Pair with given sum %d is (%d, %d) \n", sum, arr[i], temp);
}
binMap[arr[i]] = 1;
}
}
int main()
{
int A[] = {1, 4, 45, 6, 10, 8};
int n = 16;
int arr_size = 6;
printPairs(A, arr_size, n);
getchar();
return 0;
}
答案 0 :(得分:1)
如何将binMap [arr]中的元素初始化为1和1 休息到0?
有了这个
bool binMap[MAX] = {0};
数组binMap
数组中的每个元素都初始化为0
(实际上它只将binMap[0]
设置为0
,但由于C中的隐式初始化,其余部分首先将元素设置为0
。
然后在循环中,
binMap[arr[i]] = 1;
arr
元素给出的索引设置为1.例如,如果arr[i]
为45
,则binMap[45]
设置为1
。