Skip to content

Instantly share code, notes, and snippets.

@RameshRM
Created December 14, 2016 01:59
Show Gist options
  • Save RameshRM/e957605229a5f51c9341b1c8223120fa to your computer and use it in GitHub Desktop.
Save RameshRM/e957605229a5f51c9341b1c8223120fa to your computer and use it in GitHub Desktop.
public class TestSum {
public static void main(String[] args) {
List<Integer> inputNumbers = new ArrayList<Integer>();
inputNumbers.add(3);
inputNumbers.add(4);
inputNumbers.add(6);
inputNumbers.add(2);
inputNumbers.add(5);
inputNumbers.add(1);
inputNumbers.add(7);
inputNumbers.add(1);
List<List<Integer>> result = new ArrayList<>();
Object[] inputArray = inputNumbers.toArray();
int size = inputNumbers.size();
int numberToMatch = 7;
int counter = -1;
for (Object item : inputArray) {
int number = (int) item;
counter++;
List<Integer> matched = new ArrayList<>();
if (number == numberToMatch) {
matched.add(number);
} else if (number < numberToMatch) {
matched = findSumResult(Arrays.copyOfRange(inputArray, counter + 1, size), numberToMatch, number);
}
if (matched != null && !matched.isEmpty()) {
result.add(matched);
}
}
System.out.println(result);
}
public static List<Integer> findSumResult(Object[] subArray, int numberToMatch, int currentValue) {
int sum = currentValue;
List<Integer> result = new ArrayList<>();
result.add(currentValue);
for (Object i : subArray) {
int number = (int) i;
if (sum < numberToMatch && sum + number <= numberToMatch) {
sum += number;
result.add(number);
}
}
return sum == numberToMatch ? result : null;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment