Найдите минимальное абсолютное значение суммы двух элементовJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Найдите минимальное абсолютное значение суммы двух элементов

Сообщение Anonymous »

Я решаю проблему Codility, представленную ниже:

Пусть A — непустой массив, состоящий из N целых чисел.

Абс-сумма двух для пары индексов (P, Q) представляет собой абсолютное значение |A[P] + A[Q]|, для 0 ≤ P ≤ Q < N.

Например, следующий массив A:



A[0] = 1 A1 = 4 A[2] = -3 имеет пары индексов (0, 0), (0,
1), (0, 2), (1, 1), (1, 2), (2, 2). Абс-сумма двух для пары
(0, 0) равна A[0] + A[0] = |1 + 1| = 2. Абс-сумма двух для пары
(0, 1) равна A[0] + A1 = |1 + 4| = 5. Абс-сумма двух для пары
(0, 2) равна A[0] + A[2] = |1 + (−3)| = 2. Абс сумма двух для
пары (1, 1) равна A1 + A1 = |4 + 4| = 8. Абс сумма двух для
пары (1, 2) равна A1 + A[2] = |4 + (−3)| = 1. Абс-сумма двух для
пары (2, 2) равна A[2] + A[2] = |(−3) + (−3)| = 6.`



Напишите функцию:

Код: Выделить всё

class Solution { public int solution(int[] A); }
что для непустого массива A, состоящего из N целых чисел, возвращает минимальную сумму абс, равную двум, для любой пары индексов в этом массиве.

Например, для следующего массива A:


A[0] = 1 A1 = 4 A[2] = -3 функция должна возвращать 1, как объяснено
выше.


Данный массив A:


A[0] = -8 A1 = 4 A[2] = 5 A[3] = -10 A[4] = 3 функция
должна вернуть |(−8) + 5| = 3.


Напишите эффективный алгоритм для следующих предположений:

N — целое число в диапазоне [1..100 000]; каждый элемент массива A представляет собой целое число в диапазоне [-1 000 000 000..1 000 000 000].

Я пишу решение, представленное ниже.

Код: Выделить всё

public static int solution(int[] A) {

int N = A.length;
Arrays.sort(A);

if (A[0] >= 0) {
return 2 * A[0];
}

int i = 0;
int j = N - 1;

int sum = Math.abs((A[i] + A[j]));

// -10, -8, 3, 4, 5
while (i 

Подробнее здесь: [url]https://stackoverflow.com/questions/57766659/find-the-minimal-absolute-value-of-a-sum-of-two-elements[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»