Подсчитайте максимальное количество непересекающихся пар, один элемент которых не менее чем в K раз превышает другой.
Опубликовано: 21 Сентября, 2022
Учитывая массив arr[] и положительное целое число K , задача состоит в том, чтобы найти максимальное количество непересекающихся пар (arr[i], arr[j]) , таких что arr[j] ≥ K * arr[i] .
Примеры:
Input: arr[] = { 1, 9, 4, 7, 3 }, K = 2
Output: 2
Explanation:
There can be 2 possible pairs that can formed from the given array i.e., (4, 1) and (7, 3) that satisfy the given conditions.Input: arr[] = {2, 3, 4, 5, 6, 7, 8, 9}, K = 3
Output: 2
Подход: Данная проблема может быть решена с использованием подхода с двумя указателями. Выполните следующие шаги, чтобы решить данную проблему:
- Отсортируйте заданный массив в порядке возрастания.
- Инициализируйте две переменные i и j как 0 и (N / 2) соответственно и переменную count , которая хранит результирующее максимальное количество пар.
- Пройдите по заданному массиву в диапазоне [0, N/2] и выполните следующие шаги:
- Увеличивайте значение j до тех пор, пока j < N и arr[j] < K * arr[i] .
- Если значение j меньше, чем N , то увеличьте количество пар на 1 .
- Увеличьте значение j на 1 .
- После выполнения вышеуказанных шагов выведите в качестве результата значение count .
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O (N * log N)
Вспомогательное пространство: O(N)