Количество игроков, чей ранг равен или меньше заданного ранга отсечки
Для заданного массива 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)