Вступить в клуб →
средняяpythonСложность и стоимость структур данных

K наименьших элементов: вернуть их по возрастанию, не сортируя весь список

Реализуйте функцию k_smallest(nums, k).

Вход: nums — список целых чисел (могут быть отрицательные, нули и повторы), k — целое число.

Выход: новый список из k наименьших значений, отсортированный по возрастанию. Повторы сохраняются: если наименьшее значение встречается дважды и оба попадают в k, оба должны быть в ответе.

Краевые случаи:

  • если k <= 0, верните пустой список [];
  • если k >= len(nums), верните все элементы, отсортированные по возрастанию;
  • пустой список даёт [] при любом k.

Дополнительное требование: исходный список nums изменять нельзя — ни его порядок, ни содержимое.

Требование по сложности: решение должно работать за O(n log k) и держать в памяти порядка k элементов, а не n. Модуль heapq использовать можно и нужно.

заготовка решения

def k_smallest(nums, k):
    # ваш код
    pass

🔒 Проверка ответа — для участников клуба

  • Автотесты прямо в браузере
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела