【发布时间】:2019-04-23 07:37:25
【问题描述】:
我正在尝试使用 C++ 中的哈希表来解决编程问题。它应该是哈希表的相当简单的实现。我对哈希表非常陌生,这是我第一次尝试实现。
问题是我得到了一个包含整数的数组。除了一个整数之外,所有整数都会重复两次。我必须找到一个没有的整数。
Input: {1,2,1,3,3}
Output: 2
我的解决方案是我将开始将这些键放入哈希表中,如果我事先在哈希表中找到一个键,我将从哈希表中删除该键。
我的代码实现有效,但现在我想看看如何取回正确的值(在本例中为 2),因为即使在擦除密钥之后,密钥仍保持值为 0。
这是我的代码:
int main()
{
int num[5] = {1,2,1,3,3};
map <int,int> mymap;
for(int i=0;i<5;i++)
{
if(mymap.find(num[i])!=mymap.end())
{
mymap.erase(num[i]);
}
else
{
mymap[num[i]] = 10; //10 is just a placeholder value.
}
}
cout<<"0:"<<mymap[0]<<endl;
cout<<"1:"<<mymap[1]<<endl;
cout<<"2:"<<mymap[2]<<endl; //Should only find 10 value in 2
cout<<"3:"<<mymap[3]<<endl;
cout<<"4:"<<mymap[4]<<endl;
}
输出:
0:0
1:0
2:10
3:0
4:0
【问题讨论】:
-
哈希表,但是你使用的是映射,而不是unordered_map(前者是标准映射,后者是哈希映射)。