Рубрики
Без рубрики

День-19 третий максимальный номер

Фон Это заявление о проблеме является частью карты изучения LeetCode введения в данные … Теги с Python, Challenge.

Фон

Это законодательство о проблеме является частью знакомства о выучении LeetCode для введения структур данных с массивами – 101. Под подзаголовкой вывод.

Постановка задачи

Учитывая непустое массив целых чисел, верните третий максимальный номер в этом массиве. Если он не существует, верните максимальный номер. Сложность времени должна быть в O (n).

Пример 1.
Input: [3, 2, 1]

Output: 1

Explanation: The third maximum is 1.
Пример 2.
Input: [1, 2]

Output: 2

Explanation: The third maximum does not exist, so the maximum (2) is returned instead.
Пример 3.
Input: [2, 2, 3, 1]

Output: 1

Explanation: Note that the third maximum here means the third maximum distinct number.
Both numbers with value 2 are both considered as second maximum.
Решение подход 1.
  • Интуитивно первоначальная мысль, наступила, заключалась в том, чтобы сохранить расчет массу от массива. Но это также означало бы каждый раз, когда найден максимальный элемент. Тогда нам придется удалить один и тот же элемент из массива. Затем снова рассчитайте максимум от оставшихся элементов в массиве.
Проблемы с решением подхода 1
  • Встроенный удален не может быть использован для удаления элемента, поскольку в списке могут быть дубликаты элементы. Удаление будет удалять только первое вхождение элемента.
Решение подход 2
  1. Создайте максимум переменной и храните в нем некоторое произвольное значение.
  2. Если длина списка больше 3. Затем итерации по списку. Если значение элемента больше, чем значение максимальной переменной. Храните значение элемента максимум.
  3. Храните некоторую произвольную ценность в переменной Second_max. Итерация по списку. Если значение элемента не равно стоимости максимума. Затем снова сравните все значения элемента со значением Second_max. Если значение элемента больше, чем сохраненное значение в Second_max. Заменять.
  4. Результатом будет третий максимальный элемент.
  5. Иначе, если длина списка не превышает 3. Затем верните максимум массива.
import sys
class Solution:
    def thirdMax(self, nums: List[int]) -> int:
        maximum = -sys.maxsize
        if len(nums) >= 3:
            for element in nums:
                if element > maximum:
                    maximum = element
            second_max = -sys.maxsize
            for element in nums:
                if (element != maximum) and (second_max < element):
                    second_max = element
            third_max = -sys.maxsize
            for element in nums:
                if (element != maximum) and (element != second_max) and (third_max < element):
                    third_max = element
            if (maximum != -sys.maxsize) and (second_max != -sys.maxsize) and (third_max != -sys.maxsize):
                result = third_max
            else:
                result = max(nums)
        else:
            result = max(nums)

        return result
Учащиеся
  1. Сложность времени вышеуказанного раствора является O (n).
  2. Начальное значение максимального, Second_max, Three_max должен быть номер, который не существует в исходном списке. В противном случае это приведет к неожиданному выводу.

Оригинал: “https://dev.to/mridubhatnagar/day-19-third-maximum-number-521k”