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

Найдите третье максимальное число в массиве с O(N) Временная сложность

Вот описание вопроса:- Учитывая непустой массив целых чисел, верните третье максимальное число… С пометкой java, codenewbie, информатика.

Вот описание вопроса:-

Учитывая непустой массив целых чисел, верните третье максимальное число в этом массиве. Если он не существует, верните максимальное число. Временная сложность должна быть в 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;inums[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”