使用哈希表解决这个问题的问题

Problem in using hash tables as the solution to this problem

Andryusha 是一个有条不紊的男孩,喜欢把东西放在自己的地方。

今天他遇到了一个问题,要把袜子放在衣柜里。他有 n 只不同的袜子,最初放在一个袋子里。这些对从 1 到 n 编号。 Andryusha 想把成对的袜子放在一起放在衣柜里。他从袋子里一只一只地取出袜子,每只袜子他都看看这双袜子是否已经从袋子里拿出来了。如果没有(这意味着这双袜子还在袋子里),他将当前的袜子放在他面前的 table 上。否则,他会把那双袜子都放进衣柜。

Andryusha 记得他从包里取出袜子的顺序。你能告诉他 table 上同时出现的最大袜子数量是多少吗?就是这个问题。

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

这是我对使用散列 tables 的问题的回答,即在 C++ STL 中使用 unordered_map。

首选方法是使用数组。

谁能帮帮我,我觉得我的逻辑是正确的,我无法得到测试用例4的正确答案,这个数字非常大。我正在使用哈希 tables.

问题是找出同时在 table 上的袜子的最大数量。哪里可以一次拿走一只袜子。

有人能告诉我为什么散列 tables 是解决这个问题的糟糕方法或者没有给我正确的答案。

2*n 个数字需要读取和处理,但您只处理了 n 个数字。处理 2*n 个数字以修复。