Задача №1698. Гомо или гетеро?
Разбор добавил Андрей Гусейнов
Для решения задачи воспользуемся хэштаблицей. Эта структура данных позволяет быстро оперировать с парами ключ-значение. Ключами будут сами числа, а значениями их количества в списке. Создаем пустую хэштаблицу и просто моделируем процесс, попутно считая общее количество чисел в списке. Каждый раз (после чтения очередной строки) анализируем общее количество чисел (count) и количество записей в таблице (nRecords).
Если count меньше 2 - выводим "neither", иначе если (nRecords равно 1 - "homo"), иначе
если оба числа равны - "hetero", иначе - "both".Можно написать все с нуля, ногораздо проще использовать средства, встроенные в язык. Например, в Java это класс HashMap. Приведем решение фрагментарно для того, чтобы показать, насколько все просто:
//Создаем хэштаблицу
HashMap hmap = new HashMap(100000);
//В цикле считываем команды и
//....
//По числу-ключу определяем сколько таких чисел в списке
//null - такого числа в списке нет
Integer cnt = (Integer)hmap.get(key);
if (command.equals("insert"))
{
if (cnt == null)
{
hmap.put(key, new Integer(1));
}
else
{
hmap.put(key, new Integer(cnt.intValue()+1));
}
count++;
}
else if (cnt != null)
{
if (cnt.intValue() == 1)
{
hmap.remove(key);
}
else
{
hmap.put(key, new Integer(cnt.intValue()-1));
}
count--;
}
int nRecords = hmap.size();
//выводим результат после очередной команды
//...
Сдать: для сдачи задач необходимо войти в систему
statement