Найдите сумму абсолютной разницыJAVA

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

Сообщение Гость »


Дан массив целых чисел A и B. Для каждого элемента в B найдите сумму абсолютной разницы с элементами A и постройте массив результатов.

Пример:

A = [1,2,3] Б = [3,2,1,5] **Результат = ** [3,2,3,9]

Объяснение:

Для i=0 Б[0] = 3 сумма абсолютной разницы с A равна (3-1) + (3-2) + (3-3) = (2+1+0) = 3. Для я=1 Б[1] = 2 сумма абсолютной разницы с A равна (2-1) + (2-2) + (2-3) = (1+0+1) = 2. Для я=2 Б[2] = 1 сумма абсолютной разницы с A равна (1-1) + (1-2) + (1-3) = (0+1+2) = 3. Для я=3 Б[3] = 5 сумма абсолютной разницы с A равна (5-1) + (5-2) + (5-3) = (4+3+2) = 9. Итак, результат = [3,2,3,9] Вот мой код: Я использовал хэш-карту, чтобы избежать повторного расчета значений, если они уже рассчитаны.

static Listsolve(int[] A, int[] B) { Результат List = новый ArrayList(); Map map = new HashMap(); for(int b: B) { длинная сумма = 0; if(map.get(b) != null) { result.add(map.get(b)); } еще { for(int a : A) { сумма += Math.abs(b - a); } map.put(б, сумма); результат.добавить(сумма); } } вернуть результат; } Сложность моего кода равна O(m*n), где m — размер массива A, а n — размер массива B.

Как сократить временную сложность моего кода.
Ответить

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

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

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

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

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