Максимальное и минимальное количество элементов с суммой не более K
Опубликовано: 22 Сентября, 2022
Учитывая массив arr[] размера N и целое число K , задача состоит в том, чтобы найти максимальное и минимальное количество элементов, сумма которых меньше, чем равна K .
Примеры:
Input: N = 4, arr[ ] = {6, 2, 1, 3}, K = 7
Output: 3 1
Explanation:
Maximum number of elements whose sum is less than equal to K is 3 i.e [1, 2, 3]
Minimum number of elements whose sum is less than equal to K is 1 i.e [6]Input: N = 5, arr[] = {6, 2, 11, 3, 20}, K = 50
Output: 5 5
Подход: Эту проблему можно решить путем сортировки массива arr[]. Выполните следующие шаги, чтобы решить эту проблему:
- Отсортируйте массив arr[].
- Инициализируйте переменные maxNumEle и minNumEle как 0 , чтобы сохранить минимальное и максимальное количество элементов, сумма которых меньше, чем равна K .
- Инициализируйте переменную cumSum1 для хранения совокупной суммы массива arr[].
- Итерация в диапазоне [0, N-1] с использованием переменной i:
- Добавить текущий элемент в cumSum1 .
- Если cumSum1 меньше, чем равно K, то увеличивается на 1 в maxNumEle . В противном случае цикл прерывается.
- Инициализируйте переменную cumSum2 для хранения совокупной суммы массива arr[] .
- Итерация в диапазоне [N-1, 0], используя переменную i :
- Добавить текущий элемент в cumSum2 .
- Если cumSum2 меньше, чем равно K , то увеличьте на 1 в minNumEle, в противном случае разорвите цикл.
- После выполнения вышеуказанных шагов выведите maxNumEle и minNumEle в качестве ответа .
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O(NlogN)
Вспомогательное пространство: O(N)