Я пытаюсь решить проблему: она работает для массива положительных целых чисел, но не работает для отрицательного тестового примера. Как обработать приведенный ниже тестовый пример?
Вам дан целочисленный массив nums из 2 * n целых чисел. Вам нужно разделить числа на два массива длины n, чтобы минимизировать абсолютную разницу сумм массивов. Чтобы разделить числа, поместите каждый элемент числа в один из двух массивов.
Верните минимально возможную абсолютную разницу.
Я могу получить возможную сумму для этих отрицательных чисел и сохранить ее в списке карт, но когда я перебираю значения карты, чтобы найти абсолютную разницу, я не смог получить правильное значение как 0, вместо этого я получаю значение как 6, потому что в карте запоминания возможно При суммировании -3 к цели мы получаем 3. Таким образом, абсолютная разница становится 6.
Как справиться с этим сценарием? См. комментарий ниже в коде.
Код, который необходимо повторно просмотреть для сценария с отрицательными целыми числами.
Тестовый пример:
Ввод: nums = [2,-1,0,4,-2,-9]
Вывод: 0
Объяснение: Один оптимальный раздел: [2,4,-9] и [-1,0 ,-2].
Абсолютная разность сумм массивов равна abs((2 + 4 + -9) - (-1 + 0 + -2)) = 0.
package com.dynamicProgramming;
import java.util.*;
public class PartitionSum {
List ll = new ArrayList();
public int minimumDifference(int[] nums) {
int n = nums.length;
int range = 0;
for(int i =0;i
Подробнее здесь: https://stackoverflow.com/questions/786 ... or-negativ