Количество игроков, чей ранг равен или меньше заданного ранга отсечки

Опубликовано: 22 Сентября, 2022

Для заданного массива arr[] , состоящего из N целых чисел и целого числа R , обозначающего ранг отсечения, задача состоит в том, чтобы подсчитать количество элементов массива с рангом не выше R , так что равные элементы массива имеют одинаковый ранг, а различные элементы массива оцениваются на основе их позиций в массиве arr[] .

Примеры:

Input: arr[] = {100, 50, 50, 25}, R = 3
Output: 3
Explanation:
The players are ranked as: {1, 2, 2, 4}. The players having ranked at most R(= 3) is {1, 2, 2}. Therefore, the total count is 3.

Input: arr[] = {2, 2, 3, 4, 5}, R = 4
Output: 5

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

  • Отсортируйте заданный массив arr[] в порядке убывания.
  • Инициализируйте две переменные, скажем, rank как 1 , чтобы сохранить ранг элементов массива, и скажем, count как 0 , чтобы сохранить требуемый результат.
  • Пройдите по заданному массиву arr[] , используя переменную i , и выполните следующие шаги:
    • Если arr[i] равно предыдущему элементу, то присвойте текущему элементу тот же ранг, что и предыдущий ранг.
    • В противном случае присвойте текущему элементу значение (count + 1) th rank.
    • Если ранг больше R , то разбить. В противном случае увеличьте счетчик на 1 .
  • После выполнения вышеуказанных шагов выведите значение count в качестве ответа.

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O (N * log N)
Вспомогательное пространство: O(1)

РЕКОМЕНДУЕМЫЕ СТАТЬИ