Разбор задачи: Третье максимальное число

Предложенный нами код решения:

def third_max(nums):
    """
    :param nums: список целых чисел
    :return: третье по величине уникальное число, если оно существует, иначе максимальное число
    """
    unique_nums = list(set(nums))  # Убираем дубликаты
    unique_nums.sort(reverse=True)  # Сортируем по убыванию
    
    # Если третье по величине число существует, возвращаем его
    if len(unique_nums) >= 3:
        return unique_nums[2]
    
    # Если третье по величине число не существует, возвращаем максимальное
    return unique_nums[0]
  1. Обработка входных данных:
    • Функция third_max(nums) принимает один параметр: список целых чисел nums.
    • Задача состоит в том, чтобы найти третье по величине уникальное число в списке. Если третье по величине число отсутствует, необходимо вернуть максимальное число из списка.
  2. Удаление дубликатов:
    • На первой строке кода создается множество с помощью set(nums). Множество автоматически удаляет все дубликаты в списке, оставляя только уникальные элементы.
    • Затем это множество преобразуется обратно в список с помощью list(), так как множество не сохраняет порядок элементов, а список позволяет работать с элементами по индексам.
  3. Сортировка элементов:
    • Сортировка уникальных элементов выполняется с использованием метода sort(reverse=True), который сортирует список в порядке убывания. То есть, на первом месте будет максимальное число, на втором — второе по величине и так далее.
  4. Проверка длины списка:
    • После сортировки мы проверяем длину списка уникальных чисел. Если в нем содержится хотя бы 3 элемента, то существует третье по величине число, которое можно вернуть.
    • В случае, если уникальных элементов меньше трех, то возвращается максимальное число, которое находится в первом элементе отсортированного списка.
  5. Возврат результата:
    • Если список уникальных элементов имеет длину 3 или больше, функция возвращает третий элемент (индекс 2) из отсортированного списка.
    • Если третий элемент отсутствует, то возвращается первый элемент (максимальное число).

Пример:

Пример 1:

third_max([3, 2, 1])
  • Уникальные числа: [3, 2, 1]
  • После сортировки: [3, 2, 1]
  • Третье по величине число: 1
  • Ответ: 1

Пример 2:

third_max([1, 2])
  • Уникальные числа: [1, 2]
  • После сортировки: [2, 1]
  • Третье по величине число не существует, поэтому возвращаем максимальное: 2
  • Ответ: 2

Пример 3:

third_max([2, 2, 3, 1])
  • Уникальные числа: [2, 3, 1]
  • После сортировки: [3, 2, 1]
  • Третье по величине число: 1
  • Ответ: 1

 



Комментарии

xsnm_avatar
xsnm
,
6 месяцев, 2 дня назад

Функция third_max. Время выполнения 0.0000000000 секунд
Ввод: [1, 2, 3, 4]
Результат: = 2
Функция third_max_May. Время выполнения 0.0000000000 секунд
Ввод: [1, 2, 3, 4]
Результат: = 3
 

0

Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии