Попарная сумма из n (где n> = 3) чисел дана в указанном порядке, найдите числа. В ордере есть пара сумм первого и второго, затем первого и третьего, первого и четвертого, … второго и третьего, второго и четвертого, и так далее. Рассмотрим пример: n = 4, пусть числа равны {a, b, c, d}, их попарная сумма задана в следующем порядке: arr [] = {a + b, a + c, a + d, b + c , b + d, c + d}.
Примеры:
Input : arr[] = {11, 18, 13, 13, 8, 5} Output : {8, 3, 10, 5} 8+3 = 11, 8+10 = 18, 8+5 = 13, 3+10 = 13, 3+5 = 8, ... Input : arr[] = {13, 10, 14, 9, 17, 21, 16, 18, 13, 17} Output : {3, 10, 7, 11, 6}
Спросил в Амазонке
Подход основан исключительно на математике, которая иллюстрируется ниже:
n = 3, {a+b, a+c, b+c} We can find b-a = arr[2] - arr[1] = (b+c) - (a+c) We can find b = (arr[0] + (b-a))/2 = (a + b + (b - a))/2 = b We can find a = arr[0] - b = a n = 4, {a+b, a+c, a+d, b+c, b+d, c+d} We can find b-a = arr[3] - arr[1] = (b+c) - (a+c) We can find b = (arr[0] + (b-a)) / 2 = ((a+b) + (b-a)) / 2 a = arr[0] - b = (a+b) - b c = arr[1] - a = (a+c) - a d = arr[2] - a = (a+d) - a Observation : b_minus_a = b - a = arr[n-1] - arr[1] b = (arr[0] + b_minus_a)/2 a = (arr[0] - b) c = arr[1] - a d = arr[2] - a .......... n = 5, {a+b, a+c, a+d, a+e, b+c, b+d, b+e, c+d, c+e, d+e} Then calculate b-a = arr[n-1] - arr[1] = (b+c) - (a+c) Then b = (arr[0] + (b-a)) / 2 = ((a+b) + (b-a)) / 2 a = arr[0] - b = (a+b) - b Then for i=1 to n-2, remaining numbers are calculated as arr[i] - a, like c = arr[1] - a = (a+c) - a d = arr[2] - a = (a+c) - a and so on, . . . . last number = arr[n-2] - a
Ниже приведена реализация вышеуказанной идеи.
|
Джава
|
python3
|
C #
|
PHP
|
Выход:
Numbers are: 3, 10, 7, 11, 6
Сложность времени: O (n)
Ссылки:
https://www.careercup.com/question?id=12005195
Эта статья предоставлена Аюшем Джаухари . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Выведите все различные целые числа, которые могут быть образованы K числами из данного массива из N чисел
- Побитовое И суммы простых чисел и суммы составных чисел в массиве
- Переставьте числа в массиве так, чтобы никакие два соседних числа не были одинаковыми
- Найти LCM рациональных чисел
- Найти XOR первых N простых чисел
- Найти XOR чисел из диапазона [L, R]
- Найти самый длинный подмассив, имеющий ровно k нечетных чисел
- Найти подмассив с заданной суммой | Набор 1 (неотрицательные числа)
- Найти лучшие k (или наиболее часто встречающиеся) числа в потоке
- Найти k чисел с большинством вхождений в данном массиве
- Найдите минимальное расстояние между двумя числами
- Найти подмассив с заданной суммой | Набор 2 (Обрабатывает отрицательные числа)
- Найти два числа, делители которых заданы в случайном порядке
- Найти четыре пропущенных числа в массиве, содержащем элементы от 1 до N
- Найти k наименьших чисел после удаления заданных элементов
0.00 (0%) 0 votes