Last active
November 8, 2018 14:58
-
-
Save AndrewBystrov/cfe3e784b7c66fdc81b4e22b3ed6a50c to your computer and use it in GitHub Desktop.
Answer for 138
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.ArrayList; | |
import java.util.Arrays; | |
import java.util.List; | |
class Scratch { | |
public static void main(String[] args) { | |
out(new int[]{-1, 2, -1, 3, -4}); // -1 -1 -4 | |
out(new int[]{-1, -2, -1, 13, -4}); // 13 | |
out(new int[]{-1, -2, -1, -3, -4}); // -1 -2 -1 -3 -4 | |
out(new int[]{-1, 2}); // 2 | |
out(new int[]{-1, 0}); // -1 | |
out(new int[]{0, 0, 0, 0, 0}); // 0 | |
} | |
private static void out(int[] a) { | |
System.out.println(Arrays.toString(solve(a))); | |
} | |
private static Integer[] solve(int[] a) { | |
// суть состоит в том, чтобы разделить исходный массив на 2 массива, | |
// в первом будут только положительные числа, а во втором - только отрицательные | |
// вычислить сумму для каждого из массивов, сравнить по модулю и вывести тот массив, | |
// в котором сумма будет наибольшей | |
List<Integer> positiveList = new ArrayList<>(); | |
long positiveSum = 0; | |
List<Integer> negativeList = new ArrayList<>(); | |
long negativeSum = 0; | |
boolean containsOnlyZeros = true; | |
for (int i : a) { | |
if (i != 0) { | |
containsOnlyZeros = false; | |
} | |
if (i < 0) { | |
negativeSum += i; | |
negativeList.add(i); | |
} else if (i > 0) { | |
positiveSum += i; | |
positiveList.add(i); | |
} | |
} | |
//если наш исходнй массив состоял только из 0, то вернеммассив длины 1, состоящий из 0 | |
if (containsOnlyZeros) { | |
return new Integer[]{0}; | |
} | |
if (Math.abs(negativeSum) > positiveSum) { | |
return negativeList.toArray(new Integer[0]); | |
} else { | |
return positiveList.toArray(new Integer[0]); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment