Вот описание вопроса:-
Учитывая непустой массив целых чисел, верните третье максимальное число в этом массиве. Если он не существует, верните максимальное число. Временная сложность должна быть в O(n).
Пример 1: Ввод: [3, 2, 1]
Выход: 1
Объяснение: Третий максимум равен 1. Пример 2: Ввод: [1, 2]
Результат: 2 Объяснения: Третьего максимума не существует, поэтому вместо него возвращается максимум (2).
Пример 3: Ввод: [2, 2, 3, 1]
Выход: 1
Пояснение: Обратите внимание, что третий максимум здесь означает третье максимальное отдельное число. Оба числа со значением 2 считаются вторым максимумом.
Вот мое решение на JAVA:
class Solution{ public int thirdMax(int[] nums){ int first=nums[0],second=Integer.MIN_VALUE,third=Integer. MIN_VALUE,n=nums.length,count=0; if(n<3) { if(n==1) { return nums[0]; } else { return Math.max(nums[0],nums[1]); } } for(int i=1;inums[i]&&nums[i]>second) { second=nums[i]; } } for(int i=0;i nums[i]&&nums[i]>=third) { third=nums[i]; count++; } } if(third==Integer.MIN_VALUE) { if(count!=0) { return third; } third=first; } return third; } }
Здесь, в этом решении, я просто написал функцию, как найти третье максимальное число! Сначала я беру 4 переменные целочисленного типа, такие как first (инициализировать как 1-й элемент),second,third, n (для размера массива), count (в основном используется для одного важного тестового примера). Следует отметить, что мы должны найти максимальное значение, поэтому здесь мы инициализируем переменные как минимальное значение (во втором и третьем).Чтобы мы могли сравнить значение инициализации с элементами массива. Кстати, вы бы узнали, прочитав описание вопроса! Итак, после инициализации переменной.. 1-й, если условие для длины массива от 1 до 2, то возвращаемый элемент должен быть максимальным. После этого здесь 3 для цикла, 1-й для цикла предназначен для поиска самого первого максимального номера. 2-й цикл для поиска второго максимального номера. 3-й цикл для поиска третьего максимального номера. в массиве. И, наконец, если условие для одного особого случая, то есть, если 3-й максимальный элемент отсутствует в массиве, то он вернет 1-й максимальный элемент. Примечание: Здесь предположим, что элемент массива совпадает с целым числом. MIN_VALUE , а также , если это третий максимальный элемент , тогда верните как есть! Я надеюсь, что это поможет вам!! и если возникнет какая-либо путаница по этому поводу, не стесняйтесь спрашивать в комментариях. Я бы с удовольствием объяснил:)
Счастливого кодирования ❤️
Оригинал: “https://dev.to/suchitra_13/find-third-maximum-number-in-an-array-with-o-n-time-complexity-2ac7”