在这里,它使用unordered_map
作为哈希表概念,但是我不确定它是如何做到的,甚至没有将项插入undered_map
的键值对中。
这是用于在未排序数组中查找对的代码。
在这里,它对其他所有元素都使用哈希表概念。
void findPair(int arr[],int n,int x)
{
unordered_map<int,int> umap;
for(int i=0;i<n;i++)
{
int temp=x-arr[i];
if(umap.find(temp)!=umap.end())
{
int count=umap[temp];
for(int j=0;j<count;j++)
cout<<arr[i]<<" "<<temp<<"\n";
}
umap[arr[i]]++;
}
}
您能给我一些见识吗,它是如何插入的以及为什么它会增加该值的计数?
最佳答案
该映射计数未排序数组中每个元素出现的次数。默认情况下,如果您写
umap[key]
并且
key
不在umap
中,它将key
插入默认值umap
的0
中。然后,它返回对密钥在地图中存储位置的引用。这意味着对于
arr[i]
给定的新密钥,当您调用umap[arr[i]]
时,该密钥将插入映射中,然后该值递增,以便映射为该密钥注册1
计数。关于c++ - 在未排序的数组中配对给定的总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56875253/