c++ - 使用哈希表解决此问题的问题
问题描述
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
要修复的进程号。
推荐阅读
- c++ - 我的算法没有将第二个输入检测为完美数字?
- java - 使用进度条在 webview 中加载 html
- kotlin-coroutines - kotlin 在协程返回时执行代码
- amazon-web-services - 引用使用 for_each 循环创建的每个资源
- go - Go-lang 石头剪刀布游戏
- tensorflow - 如何根据特定条件更改 keras 张量的值
- jquery - 使用模糊功能使用 Jquery 和 PHP 在 DB 中检查电子邮件
- java - 在 Spring Integration 中使用多个事务管理器时出现 NoUniqueBeanDefinitionException
- javascript - 优化谷歌应用脚本以实现自动增量列
- email - 如何在电子邮件中从 Jenkins 复制 Junit 报告?