O(n)
не медленный, на самом деле это теоретически самый быстрый способ найти минимум, так как очевидно невозможно найти минимум n элементов без фактического рассмотрения каждого из них.
Вы может обновить минимум во время l oop, что тривиально, если l oop только добавляет новые элементы на карту, но становится намного сложнее, если l oop может изменять существующие элементы (и может увеличить значение минимального до этого момента!), но, в конечном итоге, это также добавляет O (n) объема работы или больше, поэтому с точки зрения сложности это не отличается от выполнения дополнительных l oop в конце ( очевидно, что константа может быть другой - дополнительный l oop может быть медленнее, чем повторное использование исходного l oop, но сложность такая же).
Как вы сказали, есть структуры данных, которые делают более эффективно (O (log n) или даже O (1)) извлекать минимальный элемент, но за счет увеличения сложности поддерживать эту структуру данных во время вставки. Эти структуры данных имеют смысл только в том случае, если вам часто нужно проверять минимальный элемент при вставке или изменении элементов, а не в том случае, если вам нужно знать только минимум только в конце l oop, как вы описали.