如何解决使用哈希表解决这个问题的问题
Andryusha 是一个有秩序的男孩,喜欢把东西放在原处。
今天他遇到了把袜子放进衣柜的问题。他有 n 双不同的袜子,最初放在一个袋子里。这些对从 1 到 n 编号。 Andryusha 想把成对的袜子放在一起放在衣柜里。他从袋子里一只一只地取出袜子,每只一只袜子,他都会看看这双袜子是不是已经从袋子里拿出来了。如果没有(这意味着这双袜子还在包里),他将当前的袜子放在他面前的桌子上。否则,他会将这双袜子中的两只袜子都放到衣柜里。
Andryusha 记得他从袋子里取出袜子的顺序。你能告诉他桌子上最多可以放多少只袜子吗?这就是问题所在。
https://codeforces.com/contest/782/problem/A 这是问题陈述。
int main()
{
init_code();
int n ;
cin >> n ;
unordered_map <int,int> hash;
int count = 0 ;
int max = count ;
int s;
while(n--)
{ cin >> s;
hash[s]++;
if(hash[s] == 1)
count++;
if(hash[s] == 2)
count--;
if(max <= count)
max = count;
}
cout << max ;
return 0;
}
https://codeforces.com/contest/782/submission/119472076
这是我对使用哈希表的问题的回答,即在 C++ STL 中使用 unordered_map。
首选方法是使用数组。
谁能帮帮我,我觉得我的逻辑是正确的,我无法得到测试用例 4 的正确答案,这是非常大的数字。我正在使用哈希表。
问题是找到同时放在桌子上的袜子的最大数量。一次只带一只袜子。
谁能告诉我为什么哈希表是解决这个问题的不好方法或者没有给我正确的答案。
解决方法
有 2*n
个数字要读取和处理,但您只处理了 n
个数字。处理 2*n
个数字以修复。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。