Пара в несортированном массиве для заданной суммы - PullRequest
0 голосов
/ 03 июля 2019

Здесь используется 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]]++;
    }
}

Не могли бы вы дать мне некоторое представление о том, как он вставляется и почему он увеличивает счетчик этого значения?

1 Ответ

1 голос
/ 03 июля 2019

Карта подсчитывает, сколько раз каждый элемент встречается в несортированном массиве.По умолчанию, если вы пишете

umap[key]

и key не в umap, он вставляет key в umap со значением по умолчанию 0.Затем он возвращает ссылку на местоположение, где ключ был сохранен на карте.

Это означает, что для нового ключа, заданного arr[i], ключ вставляется в карту при вызове umap[arr[i]],и затем это значение увеличивается, так что карта регистрирует счет 1 для этого ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...