Учитывая отсортированный массив и число x, найдите в массиве пару, сумма которой ближе всего к x.
Примеры:
Input: arr[] = {10, 22, 28, 29, 30, 40}, x = 54 Output: 22 and 30 Input: arr[] = {1, 3, 4, 7, 10}, x = 15 Output: 4 and 10
Простым решением является рассмотрение каждой пары и отслеживание ближайшей пары (абсолютная разница между суммой пары и x минимальна). Наконец напечатайте ближайшую пару. Временная сложность этого решения составляет O (n 2 )
Эффективное решение может найти пару за время O (n). Идея похожа на метод 2 этого поста. Ниже приводится подробный алгоритм.
1) Initialize a variable diff as infinite (Diff is used to store the difference between pair and x). We need to find the minimum diff. 2) Initialize two index variables l and r in the given sorted array. (a) Initialize first to the leftmost index: l = 0 (b) Initialize second the rightmost index: r = n-1 3) Loop while l < r. (a) If abs(arr[l] + arr[r] - sum) < diff then update diff and result (b) Else if(arr[l] + arr[r] < sum ) then l++ (c) Else r--
Ниже приведена реализация вышеуказанного алгоритма.
|
Джава
|
python3
|
C #
|
PHP
|
Выход:
The closest pair is 22 and 30
Эта статья предоставлена Harsh . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме
Рекомендуемые посты:
- Найти ближайшую пару из двух отсортированных массивов
- По сортированному и повернутому массиву найдите, есть ли пара с заданной суммой.
- Найти ближайший номер в массиве
- Ближайшая пара продуктов в массиве
- Найти триплет в массиве, сумма которого ближе всего к данному числу
- Найти единственное пропущенное число в отсортированном массиве
- Найти недостающий номер в отсортированном массиве
- Найти количество элементов больше чем k в отсортированном массиве
- Найти пропущенное число в отсортированном массиве ограниченного диапазона
- Найти подмассив с суммой, ближайшей к 0
- Найти ближайшее значение для каждого элемента в массиве
- Найти ближайшее большее значение для каждого элемента в массиве
- Найти k ближайших чисел в несортированном массиве
- Найти ближайшее меньшее значение для каждого элемента в массиве
- Найти три ближайших элемента из заданных трех отсортированных массивов
0.00 (0%) 0 votes